根据给定的信息,本文将详细解释Java操作XML的相关知识点,主要涵盖XML的生成与解析。 ### Java操作XML #### XML的生成 在Java中生成XML文档通常涉及使用库如JDOM、DOM4J等。本例中使用的是JDOM库。下面通过一个具体的示例来详细了解如何生成XML文档: ```java import org.jdom.Element; import org.jdom.Document; public class Test { public String createStringFromXmlDoc() { // 创建根元素 Element root = new Element("result"); Document doc = new Document(root); // 添加子元素 for (int i = 0; i < 2; i++) { Element element = new Element("user"); // 创建“user”元素 root.addContent(element); // 将“user”元素添加到根元素 // 向“user”元素中添加属性和子元素 element.setAttribute("id", "user" + i); element.addContent(new Element("name").setText("Name " + i)); element.addContent(new Element("age").setText("Age " + i)); element.addContent(new Element("sex").setText("Sex " + i)); // 创建“items”子元素 Element items = new Element("items"); element.addContent(items); // 向“items”元素中添加子元素 for (int j = 0; j < 2; j++) { Element item = new Element("item"); item.setAttribute("id", "item" + j); item.setAttribute("count", "Count " + j); items.addContent(item); } } // 输出XML字符串 XMLOutputter xmlOutput = new XMLOutputter(); ByteArrayOutputStream baos = new ByteArrayOutputStream(); xmlOutput.output(doc, baos); return baos.toString(); } } ``` #### XML的解析 解析XML文档通常有两种方法:SAX(Simple API for XML)和DOM(Document Object Model)。本例中使用了SAXBuilder来解析XML文档。下面详细介绍XML的解析过程: ```java import java.io.StringReader; import java.io.IOException; import java.util.List; import org.jdom.Document; import org.jdom.Element; import org.jdom.input.SAXBuilder; import org.jdom.output.XMLOutputter; import org.xml.sax.InputSource; public class Test { public String getChkPubitem(String data) { try { // 创建StringReader StringReader reader = new StringReader(data); // 使用InputSource设置XML数据源 InputSource source = new InputSource(reader); // 创建SAXBuilder对象 SAXBuilder sbil = new SAXBuilder(); // 解析XML文档并获取Document对象 Document doc = sbil.build(source); // 获取根元素 Element root = doc.getRootElement(); System.out.println("Root element name: " + root.getName()); // 获取所有子节点 List<Element> children = root.getChildren(); System.out.println("Number of child elements: " + children.size()); // 遍历子元素 for (Element child : children) { // 获取子元素的属性值 String id = child.getAttributeValue("id"); String code = child.getAttributeValue("code"); String name = child.getChildText("name"); String age = child.getChildText("age"); String sex = child.getChildText("sex"); // 打印子元素的信息 System.out.println("ID: " + id); System.out.println("Code: " + code); System.out.println("Name: " + name); System.out.println("Age: " + age); System.out.println("Sex: " + sex); // 获取子元素中的“items”元素 List<Element> items = child.getChildren("items"); for (Element item : items) { String itemId = item.getAttributeValue("id"); String itemCount = item.getAttributeValue("count"); System.out.println("Item ID: " + itemId); System.out.println("Item Count: " + itemCount); } } } catch (JDOMException | IOException e) { e.printStackTrace(); } return null; } } ``` 通过上述代码可以看出,使用Java操作XML时,我们可以灵活地创建和解析复杂的XML文档。生成XML文档时,我们可以通过创建元素和设置属性等方式来构建所需的结构;而在解析XML文档时,则可以利用SAX或DOM解析器来提取所需的数据。这种方法不仅简单直观,而且能够高效处理大规模数据。
import java.io.IOException;
import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.xml.sax.InputSource;
public class test {
//生成xml
public static void main(String[] args){
String data=new test().createStringFromXmlDoc();
System.out.println(data);
System.out.println(new test().getChkPubitem(data));
}
//解析XML字符串
public String getChkPubitem(String data){
//创建一个新的字符串
StringReader read = new StringReader(data);
//创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
InputSource source = new InputSource(read);
//创建一个新的SAXBuilder
SAXBuilder sbil = new SAXBuilder();
try {
- 粉丝: 0
- 资源: 5
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助