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

DOM解析器 - 修改XML文档

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

演示示例

这是我们需要修改的输入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.txt");           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 001Lamborigini 002