हाल ही में मैं किसी दिए गए XPath और विशेषता के लिए XML फ़ाइल को पार्स करने के लिए XPathDocument और XNavigator का उपयोग कर रहा हूं। यह बहुत अच्छा काम कर रहा है, जब मैं पहले से जानता हूं कि XPath क्या है।एक्सएमएल फ़ाइल में एक्सपीएथ अस्तित्व के लिए सबसे अच्छा तरीका परीक्षण?
कभी-कभी, XPath कई संभावित XPath मानों में से एक होगा, और मैं परीक्षण करने में सक्षम होना चाहता हूं कि दिया गया XPath मौजूद है या नहीं।
मामले में मैं नामकरण गलत हो रही है, यहाँ क्या मैं एक XPath फोन कर रहा हूँ है - इस एक्सएमएल ब्लॉब दिया:
<foo>
<bar baz="This is the value of the attribute named baz">
</foo>
मैं क्या मैं "का एक XPath फोन कर रहा हूँ की तलाश में हो सकता है// foo/bar "और फिर मान प्राप्त करने के लिए विशेषता" baz "पढ़ना। कोड है कि मैं यह करने के लिए उपयोग किए जाने वाले
उदाहरण:
XPathDocument document = new XPathDocument(filename);
XPathNavigator navigator = document.CreateNavigator();
XPathNavigator node = navigator.SelectSingleNode("//foo/bar");
if(node.HasAttributes)
{
Console.WriteLine(node.GetAttribute("baz", string.Empty));
}
अब, अगर navigator.SelectSingleNode करने के लिए कॉल विफल रहता है, यह एक NullReferenceException या एक XPathException वापस आ जाएगी। मैं उन दोनों को पकड़ सकता हूं और ऊपर दिए गए परीक्षण को यह देखने के लिए उपरोक्त प्रतिक्रिया देता हूं कि दिया गया XPath अपवाद देता है, लेकिन मैं सोच रहा था कि कोई बेहतर तरीका है या नहीं?
मुझे इंटेलिसेंस में कुछ भी स्पष्ट नहीं दिखाई दिया। XPathNavigator में हैसएट्रिब्यूट्स और हैस चिल्ड्रेन लेकिन एक समय में एक नोड पथ के माध्यम से पुनरावृत्ति करने से कम, मुझे उपयोग करने के लिए कुछ भी अच्छा नहीं दिखता है।
क्या इस LINQ के साथ क्या करना है? XPathNavigator और XPathDocument LINQ से XML तक का हिस्सा नहीं हैं। –