Hey all,
Simple question, I just want to select the text from the <Template> tag. Here’s what I have, but the Xpath doesn’t match anything.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
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); } } |
You need to use an XmlNamespaceManager because the
Template element is in a namespace:
1 2 3 4 5 6 7 8 9 10 |
XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(new System.IO.StringReader(xmlText)); XmlNamespaceManager manager = new XmlNamespaceManager(xmlDoc.NameTable); manager.AddNamespace("ns", "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"); foreach (XmlNode node in xmlDoc.SelectNodes("//ns:Template", manager)) { Console.WriteLine("{0}: {1}", node.Name, node.InnerText); } |