1

linq to 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


4

2 に答える 2

1

問題は確かに名前空間です。これで問題が解決する可能性があります。

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);
于 2010-01-08T16:36:27.133 に答える
1

名前空間を参照する必要があります

例えば

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);
}      
于 2010-01-08T15:50:16.373 に答える