使用dom4j解析<?xml version="1.0" encoding="UTF-8"?> <citys> <city> <cityname> <id010>北京</id010> <id021>上海</id021> <id020>广州</id020> <id028>成都</id028> </cityname> <cityarea> <id010>华北</id010> <id021>华东</id021> <id020>华南</id020> <id028>华西</id028> </cityarea> <population> <id010>2114.8</id010> <id021>2500</id021> <id020>1292.68</id020> <id028>1417</id028> </population> </city> </citys> 并且生成新的xml
时间: 2023-06-11 16:04:44 浏览: 100
文档,其中只包含北京市的信息。
答:好的,根据您的要求,我可以给您提供一个Java程序,使用dom4j解析XML文档,并生成新的XML文档,只包含北京市的信息。代码如下:
```java
import java.io.FileWriter;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.dom4j.xpath.DefaultXPath;
public class XmlParser {
public static void main(String[] args) {
try {
// Parse the XML document using dom4j
Document doc = DocumentHelper.parseText("<?xml version=\"1.0\" encoding=\"UTF-8\"?><citys><city><cityname><id010>北京</id010><id021>上海</id021><id020>广州</id020><id028>成都</id028></cityname><cityarea><id010>华北</id010><id021>华东</id021><id020>华南</id020><id028>华西</id028></cityarea><population><id010>2114.8</id010><id021>2500</id021><id020>1292.68</id020><id028>1417</id028></population></city></citys>");
// Locate the node element for Beijing
DefaultXPath xpath = new DefaultXPath("//cityname/id010[text()='北京']/../..");
Node node = xpath.selectSingleNode(doc);
// Generate new XML document containing only information for Beijing
Document newDoc = DocumentHelper.createDocument();
Element root = newDoc.addElement("citys");
Element city = root.addElement("city");
Element cityname = city.addElement("cityname");
Element id010 = cityname.addElement("id010");
id010.setText(node.valueOf("cityname/id010"));
Element cityarea = city.addElement("cityarea");
Element id010a = cityarea.addElement("id010");
id010a.setText(node.valueOf("cityarea/id010"));
Element population = city.addElement("population");
Element id010b = population.addElement("id010");
id010b.setText(node.valueOf("population/id010"));
// Output the new XML document to a file
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileWriter("beijing.xml"), format);
writer.write(newDoc);
writer.close();
System.out.println("New XML document generated succesfully!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
运行此程序,将生成一个名为“beijing.xml”的新XML文档,其中只包含北京市的信息。
阅读全文