现在的位置: 首页 > 综合 > 正文

java 取到xml文件,并解析

2013年11月11日 ⁄ 综合 ⁄ 共 2391字 ⁄ 字号 评论关闭

xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<books>
  <book attribute="T001">
     <name>
       <t>
         <t1>第一本书</t1>
       </t>
       <t>test</t>
     </name>
     <price>$14.09</price>
  </book>
</books>

现在想的到name节点下的所有子节点:

        <t>
         <t1>第一本书</t1>
       </t>
       <t>test</t>

import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.InputStream; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.xml.sax.SAXException; 

public class DomParse { 
public DomParse() { 
//得到DOM解析器的工厂实例 
//javax.xml.parsers.DocumentBuilderFactory类的实例就是我们要的解析器工厂 

DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance(); 
try { 
  
//通过javax.xml.parsers.DocumentBuilderFactory实例的静态方法newDocumentBuilder()得到DOM解析器 
  DocumentBuilder dombuilder = domfac.newDocumentBuilder(); 
  
  //把要解析的XML文档转化为输入流,以便DOM解析器解析它 
  //InputStream is = new FileInputStream("test.xml"); 
  
  //解析XML文档的输入流,得到一个Document 
  //由XML文档的输入流得到一个org.w3c.dom.Document对象,以后的处理都是对Document对象进行的 
  Document doc = dombuilder.parse("test.xml");
  
  //得到XML文档的根节点 
//在DOM中只有根节点是一个org.w3c.dom.Element对象。 
  Element root = doc.getDocumentElement(); 
  System.out.println(root.toString());//.getTextContent()+"--------------");
  //得到节点的子节点 
//这是用一个org.w3c.dom.NodeList接口来存放它所有子节点的,还有一种轮循子节点的方法 
  NodeList books = root.getChildNodes(); 
  if (books != null) { 
  for (int i = 0; i < books.getLength(); i++) { 
    Node book = books.item(i); 
    if (book.getNodeType() == Node.ELEMENT_NODE) { 
      
    //取得节点的属性值 
    //注意,节点的属性也是它的子节点。它的节点类型也是Node.ELEMENT_NODE 
    String attribute = book.getAttributes().getNamedItem("attribute").getNodeValue(); 
    System.out.println("attribute: "+attribute); 
      
    //轮循子节点 
  for (Node node = book.getFirstChild(); node != null; node = node.getNextSibling()) 
  { 
      if (node.getNodeType() == Node.ELEMENT_NODE) { 
        if (node.getNodeName().equals("name")) { 
        String name = node.getFirstChild().getTextContent();
        
        String name1 = node.getFirstChild().getNodeValue(); 
        System.out.println("name: "+name); 
        System.out.println("name1: "+name1); 
        } 
        if (node.getNodeName().equals("price")) { 
        String price = node.getFirstChild() 
            .getNodeValue(); 
        System.out.println("price"+price); 
        } 
      } 
    } 
    } 
  } 
  } 
} catch (ParserConfigurationException e) { 
  e.printStackTrace(); 
} catch (FileNotFoundException e) { 
  e.printStackTrace(); 
} catch (SAXException e) { 
  e.printStackTrace(); 
} catch (IOException e) { 
  e.printStackTrace(); 
} 
} 

public static void main(String[] args) { 
DomParse domp=new DomParse(); 
} 
}

用的dom4j的asXML来解决 也可以。

抱歉!评论已关闭.