Я пытаюсь использовать одно выражение XPath для выбора узла, у которого есть дочерний узел, который соответствует другому узлу в документе.
Совпадение будет означать, что ALL атрибуты узла одинаковы.Поэтому, если бы узел сравнивался с несколькими атрибутами, выполнение сравнения отдельных атрибутов было бы невозможным.
В качестве примера приведено следующее:
<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>
Я хочу получитьузел службы из Служб на основе ServiceDetails, перечисленных в MyMachine.
Я думал, что это будет выглядеть примерно так:
//Services/Service[ServiceDetails = //Machines/Machine[@Name='MyMachine']/ServiceDetails]
, но, похоже, он не работаетЯ подозреваю, что оператор '=' неправильно обрабатывает сравнение узлов.Я думаю, что есть некоторые методы XPath 2.0, которые могут работать, но я использую .NET 4.0 (пространство имен System.XML), я не знаю, смогу ли я их использовать.Если бы здесь помогли методы XPath 2.0, я был бы очень признателен за объяснение того, как их использовать в .Net 4.0.
Спасибо