演示示例
这是我们需要修改的输入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>
%uA0
演示示例:
ModifyXmlFileDemo.java
package com.yiibai.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----------- <?xml version="1.0" encoding="UTF-8" standalone="no"?> <cars> <supercars company="Lamborigini"> <carname type="formula one">Lamborigini 001</carname> <carname type="sports">Lamborigini 002</carname> </supercars></cars>
%uA0