加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

25XML解析--DOM

发布时间:2020-12-15 22:30:44 所属栏目:百科 来源:网络整理
导读:1DOM:Document Object Model (文档对象模型)。 2对于XML应用开发来说, DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范 3要严格区分XML文档树中的根结点与根元素结点:根节点(Document)代表的是XML文档本身,是我们解析XML

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视频2Java培训视频教程4.Java xml培训视频Lesson 2 codecodecandidate.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);
			
	
			
		}

4JAXP(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 + ">");
	}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读