25XML解析--DOM

6 篇文章 0 订阅

1DOM:Document Object Model (文档对象模型)。

2对于XML应用开发来说,DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范

3要严格区分XML文档树中的根结点与根元素结点:根节点(Document)代表的是XML文档本身,是我们解析XML文档的入口,而根元素结点则表示XML文档的根元素,它对应于XML文档的Root。


解析XML文档

方法一:

		//Stpe1 :获得Dom工厂解析器
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
		//Step2 创建解析器
		DocumentBuilder dBuilder=dbf.newDocumentBuilder();
		//Step3:解析一个XML文档 获得Document根节点
		Document dom=dBuilder.parse(new File("E:\\我的文档\\开发相关\\JAVA视频2\\Java培训视频教程\\4.Java xml培训视频\\Lesson 2 code\\code\\candidate.xml"));
	
		NodeList listsList=dom.getElementsByTagName("PERSON");
		
		for(int i=0;i<listsList.getLength();i++)
		{
			Element element=(Element) listsList.item(i);
			String contentString=element.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue();
			System.out.println(contentString);
			
	
			
		}

4 JAXP(Java API for XML Parsing):用于XML解析的Java API。



使用递归解析XML文档


private static void parseElement(Element element)
	{
		String tagName = element.getNodeName();
		
		NodeList children = element.getChildNodes();
		
		System.out.print("<" + tagName);
		
		//element元素的所有属性所构成的NamedNodeMap对象,需要对其进行判断
		NamedNodeMap map = element.getAttributes();
		
		//如果该元素存在属性
		if(null != map)
		{
			for(int i = 0; i < map.getLength(); i++)
			{
				//获得该元素的每一个属性
				Attr attr = (Attr)map.item(i);
				
				String attrName = attr.getName();
				String attrValue = attr.getValue();
				
				System.out.print(" " + attrName + "=\"" + attrValue + "\"");
			}
		}
		
		System.out.print(">");
		
		for(int i = 0; i < children.getLength(); i++)
		{
			Node node = children.item(i);
			//获得结点的类型
			short nodeType = node.getNodeType();
			
			if(nodeType == Node.ELEMENT_NODE)
			{
				//是元素,继续递归
				parseElement((Element)node);
			}
			else if(nodeType == Node.TEXT_NODE)
			{
				//递归出口
				System.out.print(node.getNodeValue());
			}
			else if(nodeType == Node.COMMENT_NODE)
			{
				System.out.print("<!--");
				
				Comment comment = (Comment)node;
				
				//注释内容
				String data = comment.getData();
				
				System.out.print(data);
				
				System.out.print("-->");
			}
		}
		
		System.out.print("</" + tagName + ">");
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值