Xml 提取XPath中的部分路径以显示提取的值';亲子关系
假设我需要从以下XML中提取数据:Xml 提取XPath中的部分路径以显示提取的值';亲子关系,xml,xpath,Xml,Xpath,假设我需要从以下XML中提取数据: <Parents> <Parent id="1" parentname="Bob"> <Children> <Child id="1" name="kid1" /> <Child id="2" name="kid2" /> <Child id="3" name="kid3" /> </Children> </Pa
<Parents>
<Parent id="1" parentname="Bob">
<Children>
<Child id="1" name="kid1" />
<Child id="2" name="kid2" />
<Child id="3" name="kid3" />
</Children>
</Parent>
<Parent id="2" parentname="Karen">
<Children>
<Child id="4" name="kid4" />
<Child id="5" name="kid5" />
<Child id="6" name="kid6" />
</Children>
</Parent>
</Parents>
我知道我可以使用XPath非常简单地提取这些单独的数据元素,大致如下:
Parents = "/Parents/Parent/@parentname"
Children = "/Parents/Parent/Children/Child/@name"
但是有没有办法同时提取它们,这样我就可以知道父/子关系,而不必为每个父可能性创建多个XPath
谢谢 使用
for
循环遍历所有子节点,保留对当前父节点的引用:
for $p in Parents/Parent
return $p/Children/Child/concat("parent: ", $p/@parentname, "; child: ", @name)
输出:
parent: Bob; child: kid1
parent: Bob; child: kid2
parent: Bob; child: kid3
parent: Karen; child: kid4
parent: Karen; child: kid5
parent: Karen; child: kid6
您可以根据需要调整concat()
函数参数。
您可以在这里检查这种方法我没有任何线索表明您可以在XPath中这样进行变量命名/循环只是很棒的新知识谢谢你@约翰布斯托斯,不客气。我应该提到for
循环是XPath2.0特性库,我注意到。。。似乎很少有XPath工具允许使用它,但无论如何,我的.Net代码都需要它。我得看看它是怎么运作的。再次感谢,因为这正是我想要的!
parent: Bob; child: kid1
parent: Bob; child: kid2
parent: Bob; child: kid3
parent: Karen; child: kid4
parent: Karen; child: kid5
parent: Karen; child: kid6