您的位置:首页 > 编程语言 > Java开发

java解析XML实例

2015-03-19 10:10 405 查看
原文链接:http://blog.163.com/liucy_18/blog/static/53192906201062605514991/

Xmltest.java

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Element;

public class Xmltest {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
// 从 XML 文档获取 DOM 文档实例。使用此类,应用程序员可以从 XML 获取一个Document
// 创建解析工厂指定DocumentBuilder
DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = db.parse(new File("F:\\1111.xml"));// 把文件解析成DOCUMENT类型
// Element root = document.getDocumentElement();
// 得到Document的根(节点名:book)
// System.out.println("根节点标记名:" + root.getTagName());
System.out.println("*****下面遍历XML元素*****");
Element root = document.getDocumentElement();
String rootName = root.getNodeName();
System.out.println("XML文件根节点的名字:" + rootName);
NodeList list = root.getElementsByTagName("dbstore");// 获得page元素
// NodeList
// list=document.getElementsByTagName_r("dbstore");//获得page元素这个和上面一行效果一样
// System.out.println(list.getLength());
showElem(list);
}

public static void showElem(NodeList nl) {
for (int i = 0; i < nl.getLength(); i++) {
Node n = nl.item(i);// 得到父节点
if (n.hasChildNodes()) {
NamedNodeMap attributes = n.getAttributes(); // 遍历节点所有属性如<dbstore single="false" att="tta">
// System.out.println(attributes.getLength());
for (int j = 0; j < attributes.getLength(); j++) {
Node attribute = attributes.item(j);
// 得到属性名
String attributeName = attribute.getNodeName();
System.out.print("属性名:" + attributeName);
// 得到属性值
String attributeValue = attribute.getNodeValue();
System.out.println("---属性值:" + attributeValue);
}// 打印出结果属性名:att属性值:tta属性名:single属性值:false

}
// 子节点
NodeList childList = n.getChildNodes();
for (int x = 0; x < childList.getLength(); x++) {
Node childNode = childList.item(x);
// 判断取出的值是否属于Element元素,目的是过滤掉
if (childNode instanceof Element) {
// 得到子节点的名字
String childNodeName = childNode.getNodeName();
System.out.print("子节点名:" + childNodeName);
// 得到子节点的值
String childNodeValue = childNode.getTextContent();
System.out.println("---子节点值:" + childNodeValue);
}
}
showElem(n.getChildNodes());// 递归
}
}
}


1111.xml

<?xml version="1.0" encoding="gb2312" ?>

<test>
<dbstore single="false" att="tta">
<className dd="00000">com.DBImpl</className>
<methodName dd="222">setHashMap</methodName>
<methodArgsType>java.util.HashMap</methodArgsType>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/fengzi</url>
<username>root</username>
<password>root</password>
<batchSize>1000</batchSize>
</dbstore>
<dbstore single="1" att="1">
<className>1</className>
<methodName>1</methodName>
<methodArgsType>j1</methodArgsType>
<driver>1</driver>
<url>1</url>
<username>1</username>
<password>1t</password>
<batchSize>1</batchSize>
</dbstore>
</test>

控制台输出结果:

*****下面遍历XML元素*****
XML文件根节点的名字:test--test
属性名:att---属性值:tta
属性名:single---属性值:false
子节点名:className---子节点值:com.DBImpl
子节点名:methodName---子节点值:setHashMap
子节点名:methodArgsType---子节点值:java.util.HashMap
子节点名:driver---子节点值:com.mysql.jdbc.Driver
子节点名:url---子节点值:jdbc:mysql://localhost:3306/fengzi
子节点名:username---子节点值:root
子节点名:password---子节点值:root
子节点名:batchSize---子节点值:1000
属性名:dd---属性值:00000
属性名:dd---属性值:222
属性名:att---属性值:1
属性名:single---属性值:1
子节点名:className---子节点值:1
子节点名:methodName---子节点值:1
子节点名:methodArgsType---子节点值:j1
子节点名:driver---子节点值:1
子节点名:url---子节点值:1
子节点名:username---子节点值:1
子节点名:password---子节点值:1t
子节点名:batchSize---子节点值:1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dom xml