鉴于以下内容:
<xml>
<cls>
<cl id="foo">
<a>1</a>
<b>1</b>
</cl>
<cl id="bar">
<a>4</a>
<b>2</b>
</cl>
<cl id="foo">
<a>1</a>
<b>3</b>
</cl>
</cls>
<orgs>
<org clid="foo">
</org>
<org clid="foo">
</org>
<org clid="bar">
</org>
<org clid="bar">
</org>
<org clid="foo">
</org>
</orgs>
</xml>
如何xml/orgs/org
选择clid
与xml/cls/cl
id
匹配的cl/a
QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);
let Node = contact.bodyB.node as! SKSpriteNode
的值{1}} ?
这有点复杂,我不知道如何处理这样的关系。
首选与XPath 1.0的兼容性。
答案 0 :(得分:1)
//orgs/org[@clid=preceding::cls/cl[a=1]/@id]
表达式:
{{1}}
答案 1 :(得分:1)
试试这个:
org
其中clid
等于id
cl
中有a = 1
孩子的 //xml/orgs/org[@clid = //xml/cls/cl[a=1]/@id]
xml
或者如果您不想保留org
,cls
和//org[@clid = //cl[a=1]/@id]
标记并将其缩短(但如果您的xml很大/很复杂,最好保留原始标记):< / p>
"laravelcollective/html"
答案 2 :(得分:0)
试试这个(XPath 1.0表达式):
xmllint --xpath '//orgs/org[@clid=string(//cls/cl/a[text()="1"]/ancestor::cl[1]/@id)]' file.xml
输出:
<org clid="foo">
</org><org clid="foo">
</org><org clid="foo">
评论:
我动态地获取id
字符串
答案 3 :(得分:0)
此XPath 1.0表达式,
//orgs/org[@clid=//cl[a=1]/@id]
将选择所有org
元素,@clid
属性值等于至少一个@id
元素的cl
属性值,其中包含子a
元素1
的值,如要求:
<org clid="foo">
</org>
<org clid="foo">
</org>
<org clid="foo">
</org>