Question simple, je veux juste sélectionner le texte à partir de la balise 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);
}
}
4 Réponses :
Vous devez utiliser un xmlnamespacemanager code >
parce que l'élément de modèle est dans un espace de noms:
c'est une question d'espace de noms; Vous devez obtenir le tableau-table, choisir un alias et utiliser cela dans votre requête. Ou peut-être (dans ce cas) essayez ou: p> getelementsbytagname code>.
Je n'avais aucune idée que vous deviez choisir un alias arbitraire pour résoudre correctement les requêtes XPath de cette manière! Merci pour l'info Marc.
Ici, votre expression XPath nécessite une résolution d'espace de noms. Vous devez instancier un xmlnamespacakeanager et l'utiliser dans vos notes sélectionnées.
Cet échantillon doit fonctionner P>
string s = xmlDoc.DocumentElement.GetNamespaceOfPrefix(""); nsmgr.AddNamespace("ns", s);
Pourquoi avez-vous besoin de l'espace de noms de toute façon? Il suffit de me débarrasser de ces et votre sélection fonctionnera. p> p>