Java JDOM解析器 - 修改XML文檔
演示示例
這是我們需要修改輸入的文本文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?> <cars> <supercars company="Ferrari"> <carname type="formula one">Ferrari 101</carname> <carname type="sports">Ferrari 202</carname> </supercars> <luxurycars company="Benteley"> <carname>Benteley 1</carname> <carname>Benteley 2</carname> <carname>Benteley 3</carname> </luxurycars> </cars>
演示示例:
ModifyXmlFileDemo.java
import java.io.File; import java.io.IOException; import java.util.List; import org.jdom2.Attribute; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.JDOMException; import org.jdom2.input.SAXBuilder; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; public class ModifyXMLFileDemo { public static void main(String[] args) { try { File inputFile = new File("input.txt"); SAXBuilder saxBuilder = new SAXBuilder(); Document document = saxBuilder.build(inputFile); Element rootElement = document.getRootElement(); //get first supercar Element supercarElement = rootElement.getChild("supercars"); // update supercar attribute Attribute attribute = supercarElement.getAttribute("company"); attribute.setValue("Lamborigini"); // loop the supercar child node List<Element> list = supercarElement.getChildren(); for (int temp = 0; temp < list.size(); temp++) { Element carElement = list.get(temp); if("Ferrari 101".equals(carElement.getText())){ carElement.setText("Lamborigini 001"); } if("Ferrari 202".equals(carElement.getText())){ carElement.setText("Lamborigini 002"); } } //get all supercars element List<Element> supercarslist = rootElement.getChildren(); for (int temp = 0; temp < supercarslist.size(); temp++) { Element tempElement = supercarslist.get(temp); if("luxurycars".equals(tempElement.getName())){ rootElement.removeContent(tempElement); } } XMLOutputter xmlOutput = new XMLOutputter(); // display xml xmlOutput.setFormat(Format.getPrettyFormat()); xmlOutput.output(document, System.out); } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
這將產生以下結果:
<?xml version="1.0" encoding="UTF-8"?> <cars> <supercars company="Lamborigini"> <carname type="formula one">Lamborigini 001</carname> <carname type="sports">Lamborigini 002</carname> </supercars> </cars>