开发手册 欢迎您!
软件开发者资料库

Java DOM Parser - 修改XML文档

DOM解析器修改XML文档 - 从基本概念开始,简单易学地学习Java XML,其中包括概述,Java XML解析器,DOM解析器,解析XML文档,查询XML文档,创建XML文档,修改XML文档,SAX解析器,JDOM XML Parser,StAX Parser,XPath Parser,DOM4J Parser,XSLT,JAXB。

演示示例

这是我们需要修改的输入xml文件 :

         Ferrari 101      Ferrari 202               Benteley 1      Benteley 2      Benteley 3   

ModifyXmlFileDemo.java

package com.it1352.xml; import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.NamedNodeMap;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class ModifyXmlFileDemo {   public static void main(String argv[]) {      try {         File inputFile = new File("input.xml");         DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();         DocumentBuilder docBuilder = docFactory.newDocumentBuilder();         Document doc = docBuilder.parse(inputFile);         Node cars = doc.getFirstChild();         Node supercar = doc.getElementsByTagName("supercars").item(0);                  // update supercar attribute         NamedNodeMap attr = supercar.getAttributes();         Node nodeAttr = attr.getNamedItem("company");         nodeAttr.setTextContent("Lamborigini");         // loop the supercar child node         NodeList list = supercar.getChildNodes();                  for (int temp = 0; temp < list.getLength(); temp++) {            Node node = list.item(temp);            if (node.getNodeType() == Node.ELEMENT_NODE) {               Element eElement = (Element) node;               if ("carname".equals(eElement.getNodeName())) {                  if("Ferrari 101".equals(eElement.getTextContent())) {                     eElement.setTextContent("Lamborigini 001");                  }                  if("Ferrari 202".equals(eElement.getTextContent()))                     eElement.setTextContent("Lamborigini 002");               }            }         }         NodeList childNodes = cars.getChildNodes();                  for(int count = 0; count < childNodes.getLength(); count++) {            Node node = childNodes.item(count);                        if("luxurycars".equals(node.getNodeName()))               cars.removeChild(node);         }         // write the content on console         TransformerFactory transformerFactory = TransformerFactory.newInstance();         Transformer transformer = transformerFactory.newTransformer();         DOMSource source = new DOMSource(doc);         System.out.println("-----------Modified File-----------");         StreamResult consoleResult = new StreamResult(System.out);         transformer.transform(source, consoleResult);      } catch (Exception e) {         e.printStackTrace();      }   }}

这会产生以下结果 :

-----------Modified File-----------         Lamborigini 001      Lamborigini 002