Comment sélectionner les nœuds XPath en C#?
Question Simple, je veux juste le texte pour le sélectionner à partir de la <Template> tag. Voici ce que j'ai, mais le Xpath ne correspond pas à quoi que ce soit.
public static void TestXPath()
{
string xmlText = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>";
xmlText += "<Properties xmlns=\"http://schemas.openxmlformats.org/officeDocument/2006/extended-properties\" xmlns:vt=\"http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes\">";
xmlText += "<Template>Normal</Template> <TotalTime>1</TotalTime> <Pages>1</Pages> <Words>6</Words>";
xmlText += "</Properties>";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(new System.IO.StringReader(xmlText));
foreach (XmlNode node in xmlDoc.SelectNodes("//Template"))
{
Console.WriteLine("{0}: {1}", node.Name, node.InnerText);
}
}
OriginalL'auteur Joe | 2009-07-08
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser un
XmlNamespaceManager
parce que l'élément de Modèle est dans un espace de noms:OriginalL'auteur Jon Skeet
Qui est un espace de problème; vous avez besoin pour obtenir le nom de la table, choisir un alias, et utilisez-la dans votre requête. Ou peut-être (dans ce cas), essayez
GetElementsByTagName
.Ou:
OriginalL'auteur Marc Gravell
Ici l'expression xpath nécessite une résolution d'espace de noms. vous devez instancier un XmlNamespaceManager et à utiliser dans votre SelectNodes.
cet échantillon devrait travailler
vous pouvez également obtenir de l'espace de noms par défaut en utilisant et en écriture
OriginalL'auteur PierrOz
Pourquoi avez-vous besoin de l'espace de noms ici de toute façon? simplement se débarrasser de ces
et votre choix de travail.
OriginalL'auteur Joe