Jest podobne pytanie, ale wygląda na to, że rozwiązanie w moim przypadku nie zadziałało: Dziwność z XDocument, XPath i przestrzeniami nazw
Oto XML, z którym pracuję:
<?xml version="1.0" encoding="utf-8"?>
<Report Id="ID1" Type="Demo Report" Created="2011-01-01T01:01:01+11:00" Culture="en" xmlns="http://demo.com/2011/demo-schema">
<ReportInfo>
<Name>Demo Report</Name>
<CreatedBy>Unit Test</CreatedBy>
</ReportInfo>
</Report>
A poniżej jest kod, który moim zdaniem powinien działać, ale nie ...
XDocument xdoc = XDocument.Load(@"C:\SampleXML.xml");
XmlNamespaceManager xnm = new XmlNamespaceManager(new NameTable());
xnm.AddNamespace(String.Empty, "http://demo.com/2011/demo-schema");
Console.WriteLine(xdoc.XPathSelectElement("/Report/ReportInfo/Name", xnm) == null);
Czy ktoś ma jakieś pomysły? Dzięki.
Odpowiedzi:
Jeśli masz XDocument, łatwiej jest użyć LINQ-to-XML:
Jeśli masz pewność, że XPath jest jedynym rozwiązaniem, którego potrzebujesz:
źródło
XPath 1.0, który implementuje MS, nie ma pojęcia o domyślnej przestrzeni nazw. Więc spróbuj tego:
źródło
możesz skorzystać z przykładu firmy Microsoft - dla Ciebie bez przestrzeni nazw:
powinien to zrobić
źródło