解析xml以获取两个节点之间的所有节点
Posted
技术标签:
【中文标题】解析xml以获取两个节点之间的所有节点【英文标题】:Parsing xml to get the all nodes between two nodes 【发布时间】:2019-04-19 05:56:30 【问题描述】:您好,我有一个如下的 xml:
> <body>
> <p>
>
> <xxx>
> <txt><txt>
> </xxx>
> <Err type="Start"/>
> <xxx>
> <txt>f</txt>
> </xxx>
> <xxx>
> <txt>irst_name</txt>
> </xxx>
> <Err type="End"/>
> <xxx>
> <txt></txt>
> </xxx>
> <p> </body>
所以我试图在
<Err type="Start"/> .... <Err type="End"/>
然后提取txt节点值得到“firstName”的输出
这是我目前所拥有的,但在此之后有点失落,请帮助。
xml = $(mainXMl).find('p')
$(xml).each(function(wPrgs)
var parentEle = $(xml[wPrgs]).find('Err')
$(parentEle).each(function(childEle)
$.each(this.attributes, function(i, attrib)
if(attrib.name === "type" && attrib.value === "Start")
var end= childEle===parentEle.length-1 ? parentEle.nextSibling : parentEle[childEle+1];
// what goes here ?????
);
);
);
);
【问题讨论】:
【参考方案1】:不确定 xml 结构,但我认为我们可以使用 xml2json 之类的模块来有效地将 xml 解析为 json/object 结构并使用 json 进行下一步操作。例如如果我们考虑下面的xml,
<root>
<xxx>
<txt></txt>
</xxx>
<Err type="Start"/>
<xxx>
<txt>f</txt>
</xxx>
<xxx>
<txt>irst_name</txt>
</xxx>
<Err type="End"/>
<xxx>
<txt></txt>
</xxx>
</root>
转换成 json 的代码是,
var jsonObj = xml2json(xmlInput);
console.log(JSON.stringify(jsonObj, undefined, 4));
输出将是,
"root":
"xxx": [
"txt": ""
,
"txt": "f"
,
"txt": "irst_name"
,
"txt": ""
],
"Err": [
"type": "Start"
,
"type": "End"
]
【讨论】:
以上是关于解析xml以获取两个节点之间的所有节点的主要内容,如果未能解决你的问题,请参考以下文章
java解析xml文件,会把节点属性中的换行转换成空格,怎样才能避免此类转换,即保留换行
GroovyXml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )