Xml 如何在XPath中进行多路连接?
鉴于此XML:Xml 如何在XPath中进行多路连接?,xml,xpath,Xml,Xpath,鉴于此XML: <?xml version="1.0" encoding="UTF-8"?> <r> <Rk> <Req>111</Req> <RkNumber>123456</RkNumber> <RkName>John</RkName> </Rk> <Rk> <Req>111</R
<?xml version="1.0" encoding="UTF-8"?>
<r>
<Rk>
<Req>111</Req>
<RkNumber>123456</RkNumber>
<RkName>John</RkName>
</Rk>
<Rk>
<Req>111</Req>
<RkNumber>9876</RkNumber>
<RkName>Joe</RkName>
</Rk>
<Covg>
<Req>111</Req>
<RkNumber>123456</RkNumber>
<CvgNumber>123</CvgNumber>
</Covg>
<Covg>
<Req>111</Req>
<RkNumber>9876</RkNumber>
<CvgNumber>321</CvgNumber>
</Covg>
<Comp>
<Req>111</Req>
<CvgNumber>123</CvgNumber>
<CompTyp>ABC</CompTyp>
</Comp>
<Comp>
<Req>111</Req>
<CvgNumber>321</CvgNumber>
<CompTyp>DEF</CompTyp>
</Comp>
</r>
但它返回“约翰”和“乔”。我只希望返回“John”。使用此XPath
//Rk[RkNumber=//Covg[CvgNumber=//Comp[CompTyp='ABC']/CvgNumber]/RkNumber]/RkName
要通过RkNumber
选择与Covg
相关联的RkName
,该编号又通过CvgNumber
与ABC
的CompTyp
相关联的
<RkName>John</RkName>
约翰
根据要求。但请注意,对于许多XPath处理器,这将具有O(n^3)性能—也就是说,如果1Kb文档需要1ms,那么1Mb文档需要10^6秒(约11.6天),10Mb文档需要33年。对,通过谓词或子树选择,例如
/r/X
,而不是/X
,尝试将@MichaelKay的n
限制为小于文档中的元素数。
<RkName>John</RkName>