का उपयोग कर एक्सएमएल नोड्स से मेल खाने से विशेषता मान प्राप्त करें ऐसा लगता है कि यह मुश्किल होना चाहिए, लेकिन मैं वर्तमान में अटक गया हूं। मैं किसी दिए गए XPath क्वेरी स्ट्रिंग से मेल खाने वाले नोड्स से किसी विशेष विशेषता के लिए विशेषता मान प्राप्त करने का प्रयास कर रहा हूं। यहाँ मैं अब तक है:XPath क्वेरी
public static IEnumerable<string> GetAttributes(this XmlDocument xml,
string xpathQuery, string attributeName)
{
var doc = new XPathDocument(new XmlNodeReader(xml));
XPathNavigator nav = doc.CreateNavigator();
XPathExpression expr = nav.Compile(xpathQuery);
XPathNodeIterator iterator = nav.Select(expr);
while (iterator.MoveNext())
{
XPathNavigator curNav = iterator.Current;
if (curNav.HasAttributes)
{
XmlNode curNode = ((IHasXmlNode)curNav).GetNode();
if (null != curNode)
{
XmlAttribute attrib = curNode.Attributes[attributeName];
if (null != attrib)
{
yield return attrib.Value;
}
}
}
}
}
यह वर्तमान में एक अपवाद फेंकता है:
System.InvalidCastException: प्रकार की वस्तु कास्ट करने के लिए 'MS.Internal.Xml.Cache.XPathDocumentNavigator' टाइप करने के लिए 'में असमर्थ System.Xml.IHasXmlNode '।
क्या मैं इस गलत के बारे में जा रहा हूं? क्या नोड्स से मिलान करने वाले गुण मान प्राप्त करने का कोई आसान तरीका है?
LinqToXml का उपयोग क्यों नहीं करें? यह शोर पर काफी कटौती करेगा जब तक कि मुझे कुछ कारण याद नहीं आ रहा है कि आप लिंक के साथ ऐसा क्यों नहीं कर पाए? –