java中DOM解析xml文件

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

首先有一个xml文件:



	南京
	刘文文
	25
	
	程序员

利用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="\r\n" + 
				"\r\n" + 
				"	南京\r\n" + 
				"	刘文文\r\n" + 
				"	25\r\n" + 
				"	\r\n" + 
				"	>程序员\r\n" + 
				"\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{
     //在此处赋值为空             
}

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

java中DOM解析xml文件_第1张图片

你可能感兴趣的:(技术)