dom解析和生成XML文件
生活随笔
收集整理的這篇文章主要介紹了
dom解析和生成XML文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用這種方式解析時,需要使用node.getNodeType() == Node.ELEMENT_NODE判斷結點是否為元素結點,否則會輸出很多#text(結點前有空格存在的原因)。
完成的XML解析和生成代碼如下:
package test;import java.io.*; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.transform.Source; 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.NodeList; import org.w3c.dom.Node;class XMLHelper {/*** 解析XML* @param filename 要解析的XML的文件名*/public static void resolveXML(String filename) {File f = new File(filename);DocumentBuilderFactory factory = null;DocumentBuilder db = null;Element element = null;try {//獲得DOM解析器工廠factory = DocumentBuilderFactory.newInstance();//獲取具體的DOM解析器db = factory.newDocumentBuilder();//解析一個xml文檔,獲得Document對象(根節點)Document document = db.parse(f);element = document.getDocumentElement();System.out.println("Root: " + element.getNodeName());NodeList childNodes = element.getChildNodes();for (int i = 0; i < childNodes.getLength(); i++) {Node node = childNodes.item(i);if (node.getNodeType() == Node.ELEMENT_NODE) {System.out.println(node.getNodeName());NodeList nodes = node.getChildNodes();for (int j = 0; j < nodes.getLength(); j++) {Node temp = nodes.item(j);if (temp.getNodeType() == Node.ELEMENT_NODE) {System.out.println(" " + temp.getNodeName() + ": " + temp.getTextContent());}}}}} catch (Exception ex) {ex.printStackTrace();}}/*** 生成XML文件* @param filename 將生成的XML輸出到該文件*/public static void CreateXML(String filename) {try {DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();DocumentBuilder db = factory.newDocumentBuilder();Document document = db.newDocument();Element root = document.createElement("bookstore");//add bookElement book = document.createElement("book");book.setAttribute("category", "COOKING");//book.titleElement title = document.createElement("title");title.setAttribute("lang", "en");title.setTextContent("Everyday Italian");book.appendChild(title);//book.authorElement author = document.createElement("author");author.setTextContent("Giada De Laurentiis");book.appendChild(author);//book.yearElement year = document.createElement("year");year.setTextContent("2005");book.appendChild(year);//book.priceElement price = document.createElement("price");price.setTextContent("30.00");book.appendChild(price);root.appendChild(book);//add bookbook = document.createElement("book");book.setAttribute("category", "CHILDREN");//book.titletitle = document.createElement("title");title.setAttribute("lang", "en");title.setTextContent("Harry Potter");book.appendChild(title);//book.authorauthor = document.createElement("author");author.setTextContent("J K. Rowling");book.appendChild(author);//book.yearyear = document.createElement("year");year.setTextContent("2005");book.appendChild(year);//book.priceprice = document.createElement("price");price.setTextContent("39.99");book.appendChild(price);root.appendChild(book);//add bookbook = document.createElement("book");book.setAttribute("category", "WEB");//book.titletitle = document.createElement("title");title.setAttribute("lang", "en");title.setTextContent("Learning XML");book.appendChild(title);//book.authorauthor = document.createElement("author");author.setTextContent("Erik T. Ray");book.appendChild(author);//book.yearyear = document.createElement("year");year.setTextContent("2003");book.appendChild(year);//book.priceprice = document.createElement("price");price.setTextContent("39.95");book.appendChild(price);root.appendChild(book);document.appendChild(root);TransformerFactory transformerFactory = TransformerFactory.newInstance();Transformer transformer = transformerFactory.newTransformer();Source xmlSource = new DOMSource(document);StreamResult outputTarget = new StreamResult(new File(filename));transformer.transform(xmlSource, outputTarget);} catch (Exception ex) {ex.printStackTrace();}} }public class Main {public static void main(String[] args) throws Exception{String filename = "E:\\Eclipse Project\\WebTest\\WebContent\\myxml1.xml";XMLHelper.resolveXML(filename);filename = "E:\\Eclipse Project\\WebTest\\WebContent\\myxml2.xml";XMLHelper.CreateXML(filename);} }輸入的XML文件內容如下:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="COOKING"><title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"><title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"><title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>解析函數的輸出如下:
Root: bookstore booktitle: Everyday Italianauthor: Giada De Laurentiisyear: 2005price: 30.00 booktitle: Harry Potterauthor: J K. Rowlingyear: 2005price: 39.99 booktitle: Learning XMLauthor: Erik T. Rayyear: 2003price: 39.95轉載:http://blog.csdn.net/foreverling/article/details/50150111
總結
以上是生活随笔為你收集整理的dom解析和生成XML文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 趁有空,再了解一下GROOVY中关于类的
- 下一篇: Swift:在Safari中打开App