我试图使用单个XPath表达式来选择具有与文档中的另一个节点相匹配的子节点的节点。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/Service[ServiceDetails = //Machines/Machine[@Name='MyMachine']/ServiceDetails]
,但它似乎并没有工作。我怀疑'='运算符没有正确处理节点比较。我认为有一些XPath 2.0方法可以工作,但我使用.NET 4.0(System.XML命名空间),我不知道我是否可以使用它们。如果XPath 2.0方法在这里有帮助,我会非常感谢如何在.Net 4.0中使用它们的解释。
感谢
你是不是想通过匹配得到''下的''了'@ Description'来自''属性? (这会在这种情况下工作:'/ Network/Services/Service [ServiceDetails/@ Description =/Network/Machines/Machine [@Name ='MyMachine']/Services/ServiceDetails/@ Description]') –