我正在尝试使用单个 XPath 表达式来选择具有与文档中的另一个节点匹配的子节点的节点。
匹配意味着节点的所有属性都相同。因此,如果将一个节点与多个属性进行比较,则进行单独的属性比较将是不可维护的。
例如,给出以下内容:
<Network>
<Machines>
<Machine Name = "MyMachine">
<Services>
<ServiceDetails Description="MyService" Executable="c:\Myservice.exe" DisplayName="My Service" Version="5"/>
</Services>
</Machine>
...
</Machines>
<Services>
<Service Name = "Service1">
<ServiceDetails Description="MyService" Executable="c:\Myservice.exe" DisplayName="My Service" Version="5"/>
</Service>
...
</Services>
</Network>
我想根据 MyMachine 下列出的 ServiceDetails 从 Services 中获取服务节点。
我认为它看起来像:
//Services/Service[ServiceDetails = //Machines/Machine[@Name='MyMachine']/ServiceDetails]
但它似乎不起作用。我怀疑 '=' 运算符没有正确处理节点比较。我认为有一些 XPath 2.0 方法可能有效,但我使用的是 .NET 4.0(System.XML 命名空间)我不知道我是否可以使用它们。如果 XPath 2.0 方法在这里有所帮助,我将非常感谢有关如何在 .Net 4.0 中使用它们的解释。
谢谢