java中DOM解析xml文件

本文介绍了如何利用DOM(即Document Object Model文档对象模型)解析xml文件。

首先有一个xml文件:

<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<User>
	<city country="中国">南京</city>
	<name>刘文文</name>
	<age>25</age>
	<sex>男</sex>
	<occupation>程序员</occupation>
</User>

利用DOM解析这个xml文件:

import java.io.ByteArrayInputStream;
import java.io.InputStream;

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

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

public class ParsingXml {
	public static void main(String args[]) {
		String xml="<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n" + 
				"<User>\r\n" + 
				"	<city country=\"中国\">南京</city>\r\n" + 
				"	<name>刘文文</name>\r\n" + 
				"	<age>25</age>\r\n" + 
				"	<sex>男</sex>\r\n" + 
				"	<occupation>>程序员</occupation>\r\n" + 
				"</User>\r\n" + 
				"";
		DOMParsingXml(xml);
	}
	public static void DOMParsingXml(String xml) {
		try {
			byte[] b=xml.getBytes();
			InputStream inp=new ByteArrayInputStream(b);
			DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
			DocumentBuilder builder=factory.newDocumentBuilder();
			Document doc=builder.parse(inp);
			NodeList nl=doc.getElementsByTagName("User");
			for (int i = 0; i < nl.getLength(); i++) {
				System.out.println("country:" + doc.getElementsByTagName("city").item(i).getAttributes().getNamedItem("country").getNodeValue());
				System.out.println("city:  " + doc.getElementsByTagName("city").item(i).getFirstChild().getNodeValue());
				System.out.println("name:  " + doc.getElementsByTagName("name").item(i).getFirstChild().getNodeValue());
				System.out.println("age:  " + doc.getElementsByTagName("age").item(i).getFirstChild().getNodeValue());
				System.out.println("sex:  " + doc.getElementsByTagName("sex").item(i).getFirstChild().getNodeValue());
				System.out.println("occupation:  " + doc.getElementsByTagName("occupation").item(i).getFirstChild().getNodeValue());
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
		}
		
	}
}

        可以看到DOM解析xml文件是可以得到xml的属性值的,但是这样解析的xml有一个问题,就是当标签里的值为空的时候,解析xml文件就会报错为:java.lang.NullPointerException(空指针异常),那么我们需要在解析值可能为空的标签的时候加一次判断,是否为标准的dom格式,如果不是,则赋值为空(null),如下所示:

if (标签名 instanceof Element) {
     //则为标准形式,可以取到值
}else{
     //在此处赋值为空             
}

运行这个程序,可以看到控制台输入结果为:

展开阅读全文

没有更多推荐了,返回首页