可以使用 LINQ to XML 或 XPath 扩展查找后代

发布于 2024-08-16 20:22:04 字数 456 浏览 7 评论 0原文

任何人都知道为什么 linq to xmlxpath 扩展 似乎无法读取此 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


Anyone knows the problem why linq to xml or xpath extensions cant seem to read this 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


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

平定天下 2024-08-23 20:22:04

您需要引用名称空间

,例如

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);
}      

You need to reference the namespace

e.g.

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);
}      
心欲静而疯不止 2024-08-23 20:22:04

问题确实是命名空间。这可能会解决你的问题。

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);

The problem is indeed the namespace. This might solve your problem.

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
);

These XPath also works:

var xProducts = document.XPathSelectElements("//n:Products/n:Product", manager);
var xProducts = document.XPathSelectElements("//n:Product", manager);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文