J'essaie d'utiliser une seule expression XPath pour sélectionner un nœud dont un nœud enfant correspond à un autre nœud du document.XPath: Sélection d'un nœud basé sur une autre valeur de nœuds
Un match signifierait que TOUS attributs du noeud sont les mêmes. Donc, si un nœud était comparé avec plusieurs attributs, les comparaisons d'attributs individuels seraient impossibles à maintenir.
À titre d'exemple donné les éléments suivants:
<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>
Je veux obtenir le noeud de service de services sur la base des ServiceDetails énumérés sous MyMachine.
je pensais que ce serait ressembler à:
//Services/Service[ServiceDetails = //Machines/Machine[@Name='MyMachine']/ServiceDetails]
mais il ne semble pas fonctionner. Je soupçonne que l'opérateur '=' ne gère pas correctement la comparaison des noeuds. Je pense qu'il existe des méthodes XPath 2.0 qui peuvent fonctionner mais j'utilise .NET 4.0 (espace de noms System.XML) Je ne sais pas si je peux les utiliser. Si les méthodes XPath 2.0 aideraient ici, j'apprécierais vraiment une explication sur la façon de les utiliser dans .Net 4.0.
Merci
Êtes-vous essayer d'obtenir le '' sous '' en faisant correspondre les '@ description' attribue à la fois' '? (Cela fonctionnerait dans ce cas: '/ Réseau/Services/Service [ServiceDetails/@ Description =/Réseau/Machines/Machine [@ Nom = 'MyMachine']/Services/ServiceDetails/@ Description]') –