如何获取xml的节点的“路径”

问题描述

如下xml<persons><person><age>50</age><name>zhangsan</name></person><person><age>50</age><name>lisi</name></person></persons>

如何遍历这个xml,并且打印出每个节点的路径如:第一个person的age应该是:persons.person_1.age第二个person的name是:persons.person_2.name

解决方案

解决方案二:
传入叶子节点,找父节点,递归调用。publicstaticStringgetXMLAbsolutePath(Elemente){if(e.getParent()!=null){returngetXMLAbsolutePath(e.getParent())+"."+e.getName();}else{returne.getName();}}
解决方案三:
importjava.io.IOException;importjavax.xml.parsers.DocumentBuilderFactory;importjavax.xml.parsers.ParserConfigurationException;importorg.w3c.dom.Document;importorg.w3c.dom.Node;importorg.w3c.dom.NodeList;importorg.xml.sax.SAXException;publicclassmain{publicmain(){//TODOAuto-generatedconstructorstub}privatestaticbooleanparseChild(Nodenode,Stringpath){if(null==node)returnfalse;if(null!=path&&!path.equals(""))path=path+"."+node.getNodeName();elsepath=node.getNodeName();if(!node.getNodeName().startsWith("#"))System.out.println(path);NodeListnodelist=node.getChildNodes();for(inti=0;i<nodelist.getLength();i++){Nodechild=(Node)nodelist.item(i);parseChild(child,path);}returntrue;}/***@paramargs*/publicstaticvoidmain(String[]args){Documentdocument;try{document=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("test.txt");NodemapTag=document.getChildNodes().item(0);parseChild(mapTag,null);}catch(SAXExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}catch(ParserConfigurationExceptione){e.printStackTrace();}}}

解决方案四:
引用2楼r10101010的回复:

importjava.io.IOException;importjavax.xml.parsers.DocumentBuilderFactory;importjavax.xml.parsers.ParserConfigurationException;importorg.w3c.dom.Document;importorg.w3c.dom.Node;importorg.w3c.dom.NodeList;importorg.xml.sax.SAXException;publicclassmain{publicmain(){//TODOAuto-generatedconstructorstub}privatestaticbooleanparseChild(Nodenode,Stringpath){if(null==node)returnfalse;if(null!=path&&!path.equals(""))path=path+"."+node.getNodeName();elsepath=node.getNodeName();if(!node.getNodeName().startsWith("#"))System.out.println(path);NodeListnodelist=node.getChildNodes();for(inti=0;i<nodelist.getLength();i++){Nodechild=(Node)nodelist.item(i);parseChild(child,path);}returntrue;}/***@paramargs*/publicstaticvoidmain(String[]args){Documentdocument;try{document=DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("test.txt");NodemapTag=document.getChildNodes().item(0);parseChild(mapTag,null);}catch(SAXExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}catch(ParserConfigurationExceptione){e.printStackTrace();}}}

test.txt是你的xml内容
解决方案五:
C#foreach(XElementnodeindoc.Element("Persons").Nodes()){if("Person"==node.Name.LocalName){//...}...}
解决方案六:
循环解析判断。
解决方案七:
这就是一个dom树解析呀

时间: 2024-10-03 19:51:59

如何获取xml的节点的“路径”的相关文章

xml-求救:JAVA dom4j获取XML嵌套节点属性值

问题描述 求救:JAVA dom4j获取XML嵌套节点属性值 本人小白,求JAVA DOM4J源码,如: <?xml version="1.0" encoding="UTF-8"?> <test> <a name="1"> <a name="2">测试</a> </a> </test> dom4j怎么解出a节点name属性值,即获得1 2 (*

遍历获取Xml子节点值

待处理的Xml文件: <?xml version="1.0" encoding='UTF-8'?> <ufinterface billtype="gl" filename="gledi" isexchange="Y" proc="add" receiver="01" replace="Y" roottag="sendresult"

求解 获取xml 节点在treeView中显示 C#

问题描述 <?xmlversion="1.0"encoding="utf-8"?><学院name="常州工程职业技术学院"><系部name="计算机技术系"><班级name="信息1031班"><学生学号="001"姓名="A1"/><学生学号="002"姓名="B1&qu

javascript获取xml节点的最大值

 这篇文章主要介绍了利用javascript获取xml节点的最大值.需要的朋友可以过来参考下,希望对大家有所帮助 假设现在当前时间为7000毫秒.当时间为3000--6000是去3000的值,当6000--9000时取6000的值,即取xml中小于当前时间的最大值   xml文件,   代码如下: <?xml version="1.0" encoding="utf-8"?> <catalog> <cd> <ID>2&l

存储-在sharepreferences中我想要读取所有的key,xml解析节点获取可不可行

问题描述 在sharepreferences中我想要读取所有的key,xml解析节点获取可不可行 RT,假设我注册用户,存储了用户名和密码,现在做注册验证,我要验证该用户有没有注册过. 解决方案 你用getAll()方法得到那个map对象,然后遍历 解决方案二: 它内部是有个map的,里面包括所有的键值对,但是你访问不到,但是不影响年,那就直接get那个节点,设置一个,默认值,如果不存在就等于这个默认值,您根据默认值判断就行了

jquery解析XML及获取XML节点名称的实现代码_jquery

jquery获取XML节点名称的几种方法以: • get(0).tagName $(this).get(0).tagName • [0].tagName[0] $(this)[0].tagName • context.nodeName $(this).context.nodeName function getXMLData(){ $.ajax({ url:'data.xml', type: 'GET', dataType: 'xml', timeout: 1000, error: functio

Java获取XML节点总结之读取XML文档节点的方法_java

dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的. 要使用dom4j开发,需要下载导入dom4j相应的jar文件. 官网下载:http://www.dom4j.org/dom4j-1.6.1/ github下载:http://dom4j.github.io/ 下载解压之后如图所示: 我们只需要把dom4j-1.6.1.jar文件构建到我们开发项目中就可以了. 下面就以Eclipse创建java项目的构建方法为例说明: 声明:本Java项目的

兼容Firefox火狐浏览器的JS读取远程XML某节点的值

最初的想法是用于注册,判断要注册的用户名是否重复. 参数:str_xmlUrl:远程XML的地址:如http://192.168.1.19/test/xml.xmlstr_dirPath:要寻找的节点的路径,如XMLDocument/test[0]/newName2/childs[2] JS代码: 以下是引用片段:<script type="text/javascript"> function getXMLNode( str_xmlUrl, str_dirPath ) { 

利用Asp.net Ajax异步获取xml文档内容

ajax|asp.net|xml|异步 Ajax原意本是让人利用异步获取XML内容,以实现无刷新的网页效果asp.net ajax已将底层内容封装实现起来远比自写xmlhttp来的方便,至少浏览器兼容方面要强得很多下面以一个www.asp.net的示例说明一下利用microsoft ajax library来简单异步获取xml文档的方法 // 返回XML的Web 请求function OnSucceededXml(executor, eventArgs) ...{    if (executor