يمكن العثور على أحفاد باستخدام LinQ إلى XML أو ملحقات XPath

StackOverflow https://stackoverflow.com/questions/2025519

سؤال

أي شخص يعرف المشكلة لماذا 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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top