Java读取xml数据

xml中的代码

<?xml version="1.0" encoding="UTF-8"?>

<books id="aaa">
   <book id="1">
       <name>书名1</name>
       <price>100</price>
   </book>
   <book id="2"> 
       <name>书名2</name>
       <price>300</price>
   </book>
</books>

java中的代码

import java.io.File;
import java.io.IOException;

import javax.lang.model.element.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.soap.Node;

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

public class ReadXml {

    public static void main(String[] args) {
        
        try {
            //java读取xml的方法。DOM方式
            DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
            DocumentBuilder builder=factory.newDocumentBuilder();
            Document document=builder.parse(new File("NewFile.xml"));
            //获取文档根元素
            org.w3c.dom.Element root=document.getDocumentElement();
            //输出根元素id的值
            System.out.println(root.getAttribute("id"));
            //获取子级元素
            NodeList list= root.getElementsByTagName("book");
            //循环输出xml标签元素的值
            for (int i = 0; i < list.getLength(); i++) {
                org.w3c.dom.Element book=(org.w3c.dom.Element)list.item(i);
                System.out.println("--------");
                System.out.println("id="+book.getAttribute("id")); 
                //获取所有子节点
                NodeList list1=book.getChildNodes();
                //循环输出子节点中的元素内容
                for (int j = 0; j < list1.getLength(); j++) {
                    org.w3c.dom.Node child=(org.w3c.dom.Node)list1.item(j); 
                    //去掉空白节点
                    if(child instanceof org.w3c.dom.Element){
                    System.out.println(child.getNodeName()+"标签内容是"+child.getTextContent());
                    }
                }
                
                //读取子节点中元素的值,都要重新创建一个element对象
                /*org.w3c.dom.Element name=(org.w3c.dom.Element) book.getElementsByTagName("name").item(0);
                System.out.println("name="+name.getTextContent());*/
            }        
        } 
        catch (ParserConfigurationException e)
        {    
            e.printStackTrace();
        } catch (SAXException e) {
            
            e.printStackTrace();
        } catch (IOException e) {
            
            e.printStackTrace();
        }
    }

}

运行结果

aaa
--------
id=1
name标签内容是书名1
price标签内容是100
--------
id=2
name标签内容是书名2
price标签内容是300

 

posted @ 2016-02-24 11:40  zhenximeiyitian  阅读(349)  评论(0编辑  收藏  举报