嗨,我有一个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 ?????
}
});
});
});
});
答案 0 :(得分:-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"
}
]
}
}