java DOM解析XML文件

来源:互联网 发布:招聘网络技术员图片 编辑:程序博客网 时间:2024/05/22 07:50

转自:  http://www.cnblogs.com/wpcnblog/archive/2011/07/09/2101651.html

              http://blog.csdn.net/redarmy_chen/article/details/12912065

</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文件中:}


0 1
原创粉丝点击