您的位置:首页 > 其它

XML小练习:利用DOM解析XML(初级,实用性不强)

2015-05-26 12:27 295 查看
XML文件(candidate.xml):

<?xml version="1.0"?>
<PEOPLE>
<PERSON PERSONID="E01">
<NAME>Tony Blair</NAME>
<ADDRESS>10 Downing Street, London, UK</ADDRESS>
<TEL>(061) 98765</TEL>
<FAX>(061) 98765</FAX>
<EMAIL>blair@everywhere.com</EMAIL>
</PERSON>
<PERSON PERSONID="E02">
<NAME>Bill Clinton</NAME>
<ADDRESS>White House, USA</ADDRESS>
<TEL>(001) 6400 98765</TEL>
<FAX>(001) 6400 98765</FAX>
<EMAIL>bill@everywhere.com</EMAIL>
</PERSON>
<PERSON PERSONID="E03">
<NAME>Tom Cruise</NAME>
<ADDRESS>57 Jumbo Street, New York, USA</ADDRESS>
<TEL>(001) 4500 67859</TEL>
<FAX>(001) 4500 67859</FAX>
<EMAIL>cruise@everywhere.com</EMAIL>
</PERSON>
<PERSON PERSONID="E04">
<NAME>Linda Goodman</NAME>
<ADDRESS>78 Crax Lane, London, UK</ADDRESS>
<TEL>(061) 54 56789</TEL>
<FAX>(061) 54 56789</FAX>
<EMAIL>linda@everywhere.com</EMAIL>
</PERSON>
</PEOPLE>


Java实现(Domtest1.java):

package com.xml.dom;

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 Domtest1 {

public static void main(String[] args) throws Exception {

// 获取DOM解析器工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 获得具体的DOM解析器
DocumentBuilder db = dbf.newDocumentBuilder();
// 解析XML文档,获得Document对象(根结点)
Document document = db.parse(new File("candidate.xml"));
//获取根元素
Element root = document.getDocumentElement();

System.out.println(root.getNodeName());

NodeList list = root.getChildNodes();
// NodeList list = document.getElementsByTagName("PERSON");
System.out.println(countChildElement(list) + "个PERSON\n");

for (int i = 0; i < list.getLength(); i++) {
if (list.item(i).getNodeType() == Node.TEXT_NODE) {
continue;//遇到 “#text” 跳过本次循环
}

Element element = (Element) list.item(i);

NamedNodeMap nnm = list.item(i).getAttributes();

String attrname = nnm.item(0).getNodeName();

String attrvalue = nnm.item(0).getNodeValue();

System.out.println(attrname + ":" + attrvalue);

String content = element.getElementsByTagName("NAME").item(0)
.getFirstChild().getNodeValue();
System.out.println("name:" + content);

content = element.getElementsByTagName("ADDRESS").item(0)
.getFirstChild().getNodeValue();
System.out.println("address:" + content);

content = element.getElementsByTagName("TEL").item(0)
.getFirstChild().getNodeValue();
System.out.println("tel:" + content);

content = element.getElementsByTagName("FAX").item(0)
.getFirstChild().getNodeValue();
System.out.println("fax:" + content);

content = element.getElementsByTagName("EMAIL").item(0)
.getFirstChild().getNodeValue();
System.out.println("email:" + content);

System.out.println("================================================");
}
}

//计算真正的元素格式
private static int countChildElement(NodeList list) {
int validCount = 0;

for (int i = 0; i < list.getLength(); i++) {
if (list.item(i).getNodeType() != Node.TEXT_NODE) {
validCount++;//不对“#text”进行统计
}
}

return validCount;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  XML DOM