java中使用JAXP解析xml(一)

来源:互联网 发布:linux查看登录用户清单 编辑:程序博客网 时间:2024/06/06 05:49

jaxp开发包是 j2ee的一部分,它由javax.xml、org.w3c.dom、org.xml.sax包及子包组成。

在javax.xml.parser包中,定义了几个工厂类,程序员调用这些工厂类可以得到xml文档的DOM或SAX解析器,从而实现对xml的解析。


步骤

// 1.创建工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//2.得到DOM解析器
DocumentBuilder builder = factory.newDocumentBuilder();
//3.解析XML,得到代表文档的Document
builder.parse("src/1.xml");

// 4.读取值


(1):读取XML文档中的节点中的值

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/1.xml");

NodeList list = document.getElementsByTagName("书名");
Node node = list.item(0);
String context = node.getTextContent();
System.out.println(context);


(2)得到XML文档中 所有标签的值

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/1.xml");
// 得到跟节点
Node root = document.getElementsByTagName("书架").item(0);

list(root);



public void list(Node node){
if (node instanceof Element) {
System.out.println(node.getNodeName()); // 获取节点名
}
NodeList nodeList = node.getChildNodes(); // 得到书架节点先所有的子节点
for(int i =0;i<nodeList.getLength();i++){
Node n = nodeList.item(i);
list(n);
}
}



(3).得到XML文档中 标签属性的值: <书名 name="AAA">java就业培训课程</书名>

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("src/1.xml");


Element node = (Element) document.getElementsByTagName("书名").item(0);

String value = node.getAttribute("name");
System.out.println(value);




下面是 1.xml

<?xml version="1.0" encoding="UTF-8"?>
<书架>
<书>
<书名 name="AAA">java课程</书名>
<作者>KK</作者>
<售价>109</售价>
<售价>39.00元</售价>
</书>
<书>
<书名 name="BBB">网页开发</书名>
<作者>JJ</作者>
<售价>32.00元</售价>
</书>
</书架>