Je dois obtenir certains nœuds (leur InnerText) à partir d'un fichier XML. Je connais leurs noms, mais les nœuds utilisent peut-être des espaces de noms que je ne connais pas. Est-il possible d'obtenir un nœud en utilisant SelectSingleNode() ou une autre méthode sans connaître l'espace de noms utilisé par le nœud? Est-il possible d'ignorer les espaces de noms que les nœuds utilisent?Obtenir un seul nœud sans connaître son espace de noms
0
A
Répondre
3
Utilisez namespace-agnostic XPath. Pas particulièrement agréable ou efficace, mais ça marche.
Au lieu de cela:
/ns1:foo/ns2:bar/ns3:baz
utiliser ceci:
/*[local-name() = 'foo']/*[local-name() = 'bar']/*[local-name() = 'baz']
Soyez prêt à faire face aux conséquences de namespaces perdre:
<ns1:foo>
<wrong:bar>
<wrong:baz /> <!-- this would be selected (false positive) -->
</wrong:bar>
<ns2:bar>
<ns3:baz />
</ns2:bar>
</ns1:foo>
0
XmlDocument doc = new XmlDocument();
doc.Load("foo.xml");
XmlElement b, f1, f2;
b = (XmlElement)doc.SelectSingleNode("//bar");
f1 = (XmlElement)b.SelectSingleNode("ancestor::foo[1]");
f2 = (XmlElement)b.SelectNodes("ancestor::foo")[0];
Console.WriteLine(f1.GetAttribute("depth"));
Console.WriteLine(f2.GetAttribute("depth"));
Questions connexes
- 1. SelectSingleNode sans espace de noms
- 2. Comment utiliser un seul espace de noms dans les fichiers?
- 3. Supprimer l'élément dom sans connaître son parent?
- 4. Comment désérialiser un xml sans espace de noms, etc ...?
- 5. C#: Interface sans espace de noms
- 6. Retirez les événements sans connaître leurs noms
- 7. Rechercher XDocument en utilisant LINQ sans connaître l'espace de noms
- 8. Supprimer un espace de noms de WebService
- 9. Utilisez XmlSerializer pour ajouter un espace de noms sans préfixe
- 10. Définition de valeurs de tableau sans connaître son type
- 11. « templating » un espace de noms
- 12. copy-of sans espace de noms dans xlst1.0
- 13. Utiliser les migrations Rails pour supprimer un index sans connaître son nom
- 14. Comment imprimer un nœud groovy avec un espace de noms préservé?
- 15. Protéger une propriété d'objet sans connaître son nom à l'avance
- 16. Sélectionnez l'attribut de nœud XML dans un espace de noms avec XSL
- 17. Java validation xsd de xml sans espace de noms
- 18. Espace de noms IInvokeProvider?
- 19. Anonyme Espace de noms
- 20. Espace de noms Microsoft.Contracts
- 21. Espace de noms StreamElements
- 22. Routage sans espace de noms dans Rails (2.2)
- 23. créer dynamiquement une classe sans espace de noms
- 24. directive Registre des contrôles dans App_Code sans espace de noms
- 25. Comment obtenir tous les noms de classe dans un espace de noms dans Ruby?
- 26. MOC ajouter un espace de noms aux noms de classes
- 27. Obtenir le nom de chaîne d'une énumération ou d'une classe sans espace de noms?
- 28. Ajout d'un espace de noms à un élément imbriqué
- 29. Ajouter un espace de noms aux éléments
- 30. référence un espace de noms dans ascx