我有以下XML格式:
<test>
<table>
<rows>
<row ID = "1" Name ="A"/>
<row ID = "2" SubID = "1" Name ="B"/>
<row ID = "3" Name ="C"/>
<row ID = "4" SubID = "1" Name ="D"/>
<row ID = "5" Name ="E"/>
<row ID = "4" SubID = "2" Name ="E"/>
</rows>
.
.
</table>
</test>
Run Code Online (Sandbox Code Playgroud)
我想把除了那些之外的所有行都带走SubID = 1.
其中最难的部分是,并非所有行都具有被调用的属性SubID,并且并非所有具有该属性的行都SubID具有相同的值.
理想的输出应该是:
<row ID = "1" Name ="A"/>
<row ID = "3" Name ="C"/>
<row ID = "5" Name ="E"/>
<row ID = "4" SubID = "2" Name ="E"/>
Run Code Online (Sandbox Code Playgroud)
我试图使用一个带有否定值的XPath,但这不起作用:
/test/table/row/not(@SubID=1)
Run Code Online (Sandbox Code Playgroud)
有帮助吗?
kjh*_*hes 20
"困难的部分"实际上很简单:一个基本的
元素[not(@属性= '值')]
谓词将排除 元件而不属性 和 元素为其属性等于值.
因此,在您的特定情况下,所有row不@SubID等于的元素1:
/test/table/rows/row[not(@SubID = '1')]
Run Code Online (Sandbox Code Playgroud)
选择
<row ID="1" Name="A"/>
<row ID="3" Name="C"/>
<row ID="5" Name="E"/>
<row ID="4" Name="E" SubID="2"/>
Run Code Online (Sandbox Code Playgroud)
按照要求.
| 归档时间: |
|
| 查看次数: |
10473 次 |
| 最近记录: |