java DOM解析XML文件
2014-11-27 14:57
441 查看
转自: http://www.cnblogs.com/wpcnblog/archive/2011/07/09/2101651.html http://blog.csdn.net/redarmy_chen/article/details/12912065
2.往xml文件中写入
</pre>1.打印xml文件内容<pre name="code" class="java">package com.test; import java.io.File; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.w3c.dom.*; public class xmldisplay { public static void main(String args[]) { try { //建一个个解析器工厂,来获得一个具体的解析器对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); /*当获得一个工厂对象后,使用它的静态方法newDocumentBuilder()方法可以获得一个DocumentBuilder对象,这个对象代表了具体的DOM解析器 可以对XML文件进行解析 */ DocumentBuilder builder = factory.newDocumentBuilder(); //返回一个Document对象 Document doc = builder.parse("d://links.xml"); //对Document对象调用normalize(),可以去掉XML文档中作为格式化内容的空白而映射在DOM树中 的不必要的Text Node对象 doc.normalize(); /*我们可以得到一个NodeList对象,一个Node对象代表了一个XML文档中的一个标签元素,而NodeList对象,观其名而知其意,所代表的 是一个Node对象的列表 XML文件所对应link标签的内容 */ NodeList links = doc.getElementsByTagName("link"); for (int i = 0; i < links.getLength(); i++) { //item()可以获取每一个node对象 Element link = (Element) links.item(i); System.out.println("Content:"); System.out.println(link.getElementsByTagName("text").item(0).getFirstChild().getNodeValue()); System.out.print("URL: "); System.out.println(link.getElementsByTagName("url").item(0).getFirstChild().getNodeValue()); System.out.print("Author: "); System.out.println(link.getElementsByTagName("author").item(0).getFirstChild().getNodeValue()); System.out.print("Date: "); Element linkdate = (Element) link.getElementsByTagName("date").item(0); String day = linkdate.getElementsByTagName("day").item(0).getFirstChild().getNodeValue(); String month = linkdate.getElementsByTagName("month").item(0).getFirstChild().getNodeValue(); String year = linkdate.getElementsByTagName("year").item(0).getFirstChild().getNodeValue(); System.out.println(day + "-" + month + "-" + year); System.out.print("Description: "); System.out.println(link.getElementsByTagName("description").item(0).getFirstChild().getNodeValue()); System.out.println(); } } catch (Exception e) { e.printStackTrace(); } } }
2.往xml文件中写入
package com.test; 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.NodeList; import org.w3c.dom.Text; public class xmlldisplay1 { public static void main(String args[]) throws Exception { //建一个个解析器工厂,来获得一个具体的解析器对象 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); /*当获得一个工厂对象后,使用它的静态方法newDocumentBuilder()方法可以获得一个DocumentBuilder对象,这个对象代表了具体的DOM解析器 可以对XML文件进行解析 */ DocumentBuilder builder = factory.newDocumentBuilder(); //返回一个Document对象 Document doc = builder.parse("d://links.xml"); //对Document对象调用normalize(),可以去掉XML文档中作为格式化内容的空白而映射在DOM树中 的不必要的Text Node对象 doc.normalize(); /*我们可以得到一个NodeList对象,一个Node对象代表了一个XML文档中的一个标签元素,而NodeList对象,观其名而知其意,所代表的 是一个Node对象的列表 XML文件所对应link标签的内容 */ NodeList links = doc.getElementsByTagName("link"); String text="Homepage"; String url="www.hzliu.com"; String author="Hzliu"; String discription="!!!"; Text textseg; Element link=doc.createElement("links"); Element linktext=doc.createElement("text"); textseg=doc.createTextNode(text); linktext.appendChild(textseg); link.appendChild(linktext); // doc.getDocumentElement().appendChild(link); Element linkurl=doc.createElement("url"); textseg=doc.createTextNode(url); linktext.appendChild(textseg); link.appendChild(linkurl); doc.getDocumentElement().appendChild(link); TransformerFactory tFactory =TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new java.io.File("d://links.xml")); transformer.transform(source, result); } ////我们希望在上面的XML文件中加入一个新的link节点,因而首先还是要读入links.xml文件,构建一个DOM树,然后再对这个DOM树进行修改(添加节点),最后把修改后的DOM写回到links.xml文件中: }
相关文章推荐
- java 解析dom 树方式来解析XML文件
- Java使用DOM解析XML文件
- Java--Dom解析XML文件
- Java使用DOM解析XML的文件属性名和属性值、节点名和节点值
- Java解析XMl文件之SAX和DOm方法
- Java DOM解析XML文件
- java中DOM解析xml文档却找不到文件
- Java眼中的XML--文件读取--1 应用DOM方式解析XML
- Java乔晓松-使用SAX,DOM,pull解析XML文件以及pull解析生成xml文件
- 利用java的Dom解析XML文件
- Java--Dom解析XML文件
- Java之xml文件解析一(DOM方式解析xml文件)
- Java解析XML文档——dom解析xml
- Java解析XML文档——dom解析xml (转载)
- Java中使用DOM来解析xml文档
- Java SAX解析器解析XML配置文件
- java解析xml之一:使用SAX与DOM
- Java解析XML文档——dom解析xml (转载)
- Java解析XML文档——dom解析xml (转载)
- JAVA中解析XML文件