XML之DOM解析

     如果一个程序需要进行DOM解析读取操作的话,需要按照如下的步骤进行:

   1  建立DocumentBuilderFactory:

       DocumentBuilderFactory   factory= DocumentBuilderFactory.newInstance();

    2 建立DocumentBuilder:

       DocumentBuilder builder = factory.newDocumentBuilder();   

    3 建立Document:

       Document doc = builder.parse("要读取的文件路径");

    4 建立NodeList :

    NodeList nl = doc.getElementsByTagName("读取节点");

    5 进行XML信息读取。


   下面以一个具体的例子来实现。

    首先,我们先建立一个名为1.xml的文件。代码如下:

  <?xml version="1.0" encoding="GBK"?>
  <linkman>
    <name>
     Runner
    </name>
  </linkman>

  然后,我们需要建立一个解析类。

代码如下:

import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
public class DOMDEMO
{ 
   public static void main(String args[]) throws Exception{
    //得到<span style="font-family: Arial, Helvetica, sans-serif;">DocumentBuilderFactory对象</span>
	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // 得到<span style="font-family: Arial, Helvetica, sans-serif;">DocumentBuilder对象</span>
	DocumentBuilder build = factory.newDocumentBuilder();
	Document doc = build.parse(new File("D:"+File.separator+"1.xml"));
    //得到所有的linkman节点
	NodeList n1 = doc.getElementsByTagName("linkman");
    for(int x=0;x<n1.getLength();x++)
	   {
		// quchu meiyige
		 Element e = (Element) n1.item(x); 
         System.out.println("name:"+e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
	   }
   }
}
得到的解析结果如下:




   DOM操作除了可以进行解析之外,也可以进行文件的生成。

  如果要想生成XML文件,则在创建文档的时候,就应该使用的是newDocument();

import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;
public class DOMDEMO
{ 
   public static void main(String args[]) throws Exception{
    //
	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // 
	DocumentBuilder build = factory.newDocumentBuilder();
	//Document doc = build.parse(new File("D:"+File.separator+"1.xml"));
	//!!!!!!!
	Document doc = build.newDocument(); //创建一个新的xml文档
	Element linkman = doc.createElement("linkman");
	Element name = doc.createElement("name");
	//设置节点内容
	name.appendChild(doc.createTextNode("Runners"));
	//设置各个节点的关系
	linkman.appendChild(name);
	doc.appendChild(linkman);
	//得到所有的节点
	NodeList n1 = doc.getElementsByTagName("linkman");
    for(int x=0;x<n1.getLength();x++)
	   {
		// quchu meiyige
		 Element e = (Element) n1.item(x); 
         System.out.println("name:"+e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
	   }
   }
}

结果如下:





如果要将DOM文档输出本身比较麻烦。

代码如下:


import javax.xml.parsers.*;
import javax.xml.stream.util.StreamReaderDelegate;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import java.io.*;

public class DOMDEMO
{ 
   public static void main(String args[]) throws Exception{
    //
	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    // 
	DocumentBuilder build = factory.newDocumentBuilder();
	//Document doc = build.parse(new File("D:"+File.separator+"1.xml"));
	//!!!!!!!
	Document doc = build.newDocument(); //创建一个新的xml文档
	Element linkman = doc.createElement("linkman");
	Element name = doc.createElement("name");
	//设置节点内容
	name.appendChild(doc.createTextNode("Runners"));
	//设置各个节点的关系
	linkman.appendChild(name);
	doc.appendChild(linkman); 
         //输出
	TransformerFactory tf = TransformerFactory.newInstance();
	Transformer t = tf.newTransformer();
	t.setOutputProperty(OutputKeys.ENCODING, "GBK");  //处理中文
	DOMSource source = new DOMSource(doc);    //准备输出文档 
	StreamResult result = new StreamResult(new File("D:"+File.separator+"output.xml"));  //输出到文档中
	t.transform(source, result);  //直接找到数据源和结果
	

结果:在d盘中出现了一个新的文件。



   打开output.xml文件,内容如下:


虽然xml代码比较难看,但是基本实现了文件的输出。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值