我有以下XML:
<Library>
<Item>
<Field Name="Name">smooth</Field>
<Field Name="File Type">mid</Field>
<Field Name="File Size">60026</Field>
</Item>
<Item>
<Field Name="Name">mid</Field>
<Field Name="File Type">mp3</Field>
<Field Name="File Size">4584972</Field>
</Item>
</Library>
Run Code Online (Sandbox Code Playgroud)
我想得到文件类型为"mid"的项目的所有项目名称.我的XPATH查询看起来像
/Library/Item/Field
[
@Name="Name" and
(../Field[@Name="File Type" and ../Field[.="mid"]])
]
Run Code Online (Sandbox Code Playgroud)
但不幸的是,这两个项都是从该查询返回的.
smooth
mid
Run Code Online (Sandbox Code Playgroud)
似乎不会针对仅具有"文件类型"属性的字段检查最后一个条件,而是检查所有字段.这导致返回名称"mid",即使此项目的文件类型为"mp3".
如何使用属性Name ="File Type"将与"mid"的比较限制为字段的值?
任何人都可以建议我使用XPATH语法按预期工作吗?
Tom*_*lak 27
XPath谓词可以应用于任何地方,这将更直截了当:
/Library/Item[Field[@Name="File Type"] = "mid"]/Field[@Name="Name"]
Run Code Online (Sandbox Code Playgroud)
你自己的表达是正确的
/Library/Item/Field[
@Name="Name"
and ../Field[@Name="File Type"] = "mid"
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39101 次 |
| 最近记录: |