je construis une liste de nœuds que je dois charger du document XML à l'aide SelectNodes (XPath):Interrogation doc XML avec Excel VBA
Set oNodeList = xmldoc.selectNodes("//Object/Property[@Name='Group' and Value='True']")
et boucle à travers les nœuds:
For Each curNode In oNodeList
Set nAttr = curNode.parentNode.Attributes
If (nAttr.getNamedItem("Seq").nodeValue = "abc") Then
' additional processing
End If
Next
Un traitement supplémentaire implique la boucle à travers les nœuds enfants de curNode. Je me demandais s'il était possible de construire encore une autre nodeList en utilisant selectNodes qui sélectionnerait des nœuds enfants de curNode répondant à des critères particuliers. Le point clé que xpath devrait commencer à chercher depuis le nœud actuel.
Comment puis-je faire cela?
La documentation n'est pas claire. De http://msdn.microsoft.com/en-us/library/aa220790(v=office.11).aspx il semble que vous pouvez appeler la méthode 'selectNodes' uniquement pour une classe' Document', mais dans http: //msdn.microsoft.com/en-us/library/aa212478(v=office.11).aspx Il existe une méthode 'selectNodes' répertoriée liée à la même page de documentation. Donc, il n'est pas possible de dire comment 'selectNodes' définit le nœud de contexte. Vous pouvez essayer d'appeler cette méthode à partir de 'curNode'. En outre, vous effectuez un filtrage dans 'For Each' qui semble pouvoir être fait dans la première expression XPath. Clarifiez cela. –
@Alejandro: Filtrage dans le Pour Chaque est ce que je fais maintenant et bien sûr cela fonctionne mais le code est moche. Ce serait beaucoup mieux si je pouvais Xpath à partir du nœud actuel. Je sais que je pourrais le faire en ajoutant [position() = nnn] à la requête d'origine (où nnn est index curNode) mais encore une fois, c'est moche. Je cherche xpath à partir du nœud actuel! – mtelis