我想编写一个xpath表达式,通过跳过特定的子项来获取父标记。这是我的源xml:
<root>
<paren>
<child1>10</child1>
<child2>20</child2>
<child3>30</child3>
</paren>
<paren>
<child1>101</child1>
<child2>202</child2>
<child3>303</child3>
</paren>
</root>
我想跳过<child3>
并在xpath之后得到以下输出:
<root>
<paren>
<child1>10</child1>
<child2>20</child2>
</paren>
<paren>
<child1>101</child1>
<child2>202</child2>
</paren>
</root>
我尝试使用以下php代码:
$output_xml = $input_xml->xpath('//paren/*[not(self::child3)]');
它提供以下输出[注意:pren&amp;根标记丢失]:
<child1>10</child1>
<child2>20</child2>
<child1>101</child1>
<child2>202</child2>
如何编辑xpath以检索预期的输出?
答案 0 :(得分:1)
使用纯XPath无法获得该输出。 Element是XPath数据模型中的一个单元。例如,选择www.medwebtest.com
元素表示选择开始标记paren
,结束标记<paren>
以及其间的所有内容。在原始XML中没有这样的</paren>
元素,XPath查询可以根据需要返回该元素。{1}}
您要做的更多是XML转换,通常使用XSLT或使用您选择的编程语言,大概是PHP。