Il s'agit d'une version simplifiée d'un système plus complexe XML
que je dois gérer avec C#
.
Le problème est que lorsque j'essaie d'accéder à une balise à l'intérieur d'un espace de nom, la balise XPATH
ne fonctionne pas.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<s:Body xmlns:s=\"sssssss\"><s:SessionID>abcde</s:SessionID></s:Body>");
string xpath = "//*[local-name()='s:SessionID']";
Context.UserLogger.Info(xmlDoc.SelectSingleNode(xpath).InnerText);
//Object reference not set to an instance of an object
Mais le code fonctionne parfaitement sans les deux-points sur la balise.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("<s:Body xmlns:s=\"sssssss\"><SessionID>abcde</SessionID></s:Body>");
string xpath = "//*[local-name()='SessionID']";
Context.UserLogger.Info(xmlDoc.SelectSingleNode(xpath).InnerText);
//abcde
Je me suis assuré sur un validateur XPATH que le "//*[local-name()='s:SessionID']" fonctionne bien.
Qu'est-ce que je rate ?
Merci d'avance,
J'ai lu des informations sur XmlNamespaceManager
mais je préférerais utiliser des chemins "directs". Le XML est plein de NameSpaces et il est dynamique, donc sa structure change assez souvent.