在Java中,我们可以使用dom4j来解析XML,dom4j是一款流行的XML解析器,它提供了非常方便的API来访问XML文档的各个部分,同时也具有良好的性能和稳定性。
以下是使用dom4j解析XML的完整攻略:
- 导入dom4j库
在你的Java项目中需要导入dom4j的jar包,可以从dom4j官网下载,或者使用Maven等工具引入。
- 加载XML文档
将XML文件加载为一个dom4j的Document对象,可以通过使用SAXReader类来实现:
SAXReader reader = new SAXReader(); //创建一个SAXReader对象
Document document = reader.read(new File("example.xml")); //加载一个XML文件,获得document对象
- 访问XML元素
我们可以使用dom4j的XPath表达式来访问XML中的元素。例如,如果我们想访问所有book元素下的所有author元素,可以使用以下代码:
List<Node> authorList = document.selectNodes("//book/author");
for(Node node : authorList){
System.out.println(node.getText());
}
这段代码使用selectNodes()
方法,以XPath表达式//book/author
查找XML文档中所有book元素下的所有author元素,并将它们打印到控制台。
- 修改XML文档
我们可以使用dom4j的API来修改XML文档中的元素、属性、文本等信息。例如,如果我们想将XML文档中每个title元素的文本修改为"New Title",可以使用以下代码:
List<Node> titleList = document.selectNodes("//title");
for(Node node : titleList){
node.setText("New Title");
}
这段代码使用selectNodes()
方法,以XPath表达式//title
查找XML文档中所有title元素,并使用setText()
方法将它们的文本信息修改为"New Title"。
示例1:
在以下XML文档中,我们需要解析所有book元素下的title元素和author元素,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="001">
<title>Java programming</title>
<author>John</author>
</book>
<book id="002">
<title>XML parsing</title>
<author>Tom</author>
</book>
<book id="003">
<title>Database administration</title>
<author>Jane</author>
</book>
</catalog>
SAXReader reader = new SAXReader();
Document document = reader.read(new File("example.xml"));
List<Node> bookList = document.selectNodes("//book");
for(Node bookNode : bookList){
Node titleNode = bookNode.selectSingleNode("title");
Node authorNode = bookNode.selectSingleNode("author");
System.out.println(titleNode.getText() + " - " + authorNode.getText());
}
这段代码首先使用selectNodes()
方法,以XPath表达式//book
查找XML文档中所有book元素,然后使用selectSingleNode()
方法在每个book元素中查找对应的title元素和author元素。最后将它们的文本信息打印到控制台。
示例2:
现在我们考虑如何向XML中的book元素中添加新的元素。在以下XML文档中,我们尝试在每个book元素下添加新的price元素,代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="001">
<title>Java programming</title>
<author>John</author>
</book>
<book id="002">
<title>XML parsing</title>
<author>Tom</author>
</book>
<book id="003">
<title>Database administration</title>
<author>Jane</author>
</book>
</catalog>
SAXReader reader = new SAXReader();
Document document = reader.read(new File("example.xml"));
List<Node> bookList = document.selectNodes("//book");
for(Node bookNode : bookList){
Element priceElement = bookNode.addElement("price");
priceElement.setText("20.0");
}
OutputFormat format = OutputFormat.createPrettyPrint(); //创建输出格式
format.setEncoding("UTF-8"); //设置编码
XMLWriter writer = new XMLWriter(new FileOutputStream("example.xml"), format);
writer.write(document);
writer.close();
这段代码首先使用selectNodes()
方法,以XPath表达式//book
查找XML文档中所有book元素,然后使用addElement()
方法在每个book元素下添加新的price元素,并使用setText()
方法为其赋值。最后,通过OutputFormat
和XMLWriter
将修改后的XML文档写回到文件中。
以上就是使用dom4j解析XML的完整攻略,并包含了两条示例说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:在java中使用dom4j解析xml(示例代码) - Python技术站