linqからxmlまたはxpath拡張機能を使用して子孫を見つけることができます
-
19-09-2019 - |
質問
誰もがその理由を知っています linqからxml また XPath拡張機能 このXMLを読むことができないようですか?
http://www.quillarts.com/test/product.xml
var document = XDocument.Load(feedUrl);
var xpathxml = from feed in document.XPathSelectElements("//Products") //using Xpath
var linqtoxml = from feed in document.Descendants("Products") //using Linq2XML
解決
名前空間を参照する必要があります
例えば
var document = XDocument.Load(...);
XNamespace xmlns = "urn:yahoo:prods";
var linqtoxml = from feed in document.Descendants(xmlns + "Products") select feed;
foreach (var p in linqtoxml)
{
System.Diagnostics.Debug.WriteLine(p);
}
他のヒント
問題は実際、名前空間です。これはあなたの問題を解決するかもしれません。
var document = XDocument.Load(feedUrl);
XPathNavigator navigator = document.CreateNavigator();
XmlNamespaceManager manager = new XmlNamespaceManager(navigator.NameTable);
manager.AddNamespace("n", "urn:yahoo:prods");
var xProducts = document.XPathSelectElements(
"/n:ProductSearch/n:Products/n:Product", manager
);
これらのXpathも機能します:
var xProducts = document.XPathSelectElements("//n:Products/n:Product", manager);
var xProducts = document.XPathSelectElements("//n:Product", manager);
所属していません StackOverflow