java解析XML(DOM方式)

(一)DOM

采用DOM(Document Object Model)文档对象模型 方式首先会读取xml文档,然后在内存中形成一颗树形的结构,这个结构反应出xml文档的结构,然后就遍历树,提取出元素的内容。由于xml本身就是一种树形结构,所以DOM这种描述方法非常有效。但是由于DOM要把xml文档读取到内存中,所以如果xml文档非常大的话,那么就非常消耗内存(最大缺点)。DOM是一个对象化的xml数据接口。一个与语言无关平台无关的标准接口规范。

 

 

java解析XML(DOM方式)_第1张图片

注意区分根节点和根元素节点,其中根节点代表整个文档,是解析xml文档的一个入口,获取xml文档的document对象,获取document对象后再去逐层解析xml,而根元素节点代表文档的根元素,在DOM规范中有四个重要的接口Document,Node,NodeList,NameNodeMap(和属性打交道,属性名称不能重复),在DOM中全部都是Node

下面是DOM解析xml文件的java代码

public static void test2()throws Exception{
		DocumentBuilderFactory documentBuilderFactory=DocumentBuilderFactory.newInstance();
		DocumentBuilder documentBuilder=documentBuilderFactory.newDocumentBuilder();
		Document document=documentBuilder.parse(new File("candidate.xml"));
		//上面这几步都是固定的
		NodeList nodeList=document.getElementsByTagName("PERSON");
		System.out.println(nodeList.getLength());
		System.out.println("================================");
		for(int i=0;i<nodeList.getLength();i++){
			Element element=(Element)nodeList.item(i);
			String contentName=element.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue();
			System.out.println(contentName);
			
			String contentADDRESS=element.getElementsByTagName("ADDRESS").item(0).getFirstChild().getNodeValue();
			System.out.println(contentADDRESS);
			
			String contentTEL=element.getElementsByTagName("TEL").item(0).getFirstChild().getNodeValue();
			System.out.println(contentTEL);
			
			String contentFAX=element.getElementsByTagName("FAX").item(0).getFirstChild().getNodeValue();
			System.out.println(contentFAX);
			
			String contentEMAIL=element.getElementsByTagName("EMAIL").item(0).getFirstChild().getNodeValue();
			System.out.println(contentEMAIL);
			System.out.println("================================");
		}
	}


 

你可能感兴趣的:(java,exception,xml,object,String,文档)