2012-08-09 12 views
5

है क्या यह देखने का कोई तरीका है कि XPATH का उपयोग करके नोड मैं देख रहा हूं, जिसमें सबनोड हैं या नहीं?जांचें कि क्या xml नोड में उप बच्चा

मेरे पास एक एक्सएमएल फ़ाइल है जो कभी-कभी एक विशिष्ट नोड में बच्चे होते हैं और कुछ समय ऐसा नहीं होता है! इसके लिए कैसे जांचें, इसलिए मुझे बहुत अधिक NullReferenceExceptions नहीं मिलते हैं!

चेक नीचे दिए गए उदाहरण:

var text = xml.SelectSingleNode("/Document/Tests/Test").InnerText; 

वर्तमान xml फ़ाइल के साथ मैं काम कर रहा हूँ Tests अंदर Test नोड अपनी कार्यशील ठीक है, तो करता है, लेकिन एक और एक्सएमएल में Tests नोड फ़ाइल कुछ भी शामिल नहीं है और यह कोई स्पष्ट कारण के लिए बस वहाँ है !?

क्या ऐसा करने के लिए XPATH में कोई आदेश है? कुछ इस तरह!! :

"/Document/Tests[NodeExist(Test)]

उत्तर

4

/Document/Tests[Test] आप दे देंगे Tests नोड्स जिनमें केवल एक बच्चे के रूप में Test नोड है।

आप /Document/Tests के खिलाफ चयन भी चला सकते हैं और बाद में कम से कम Test नोड सुनिश्चित करने के लिए element.GetElementsByTagName("Test").Count > 0 पर कॉल कर सकते हैं। इस तरह आप बिना किसी अपवाद के एक खाली स्ट्रिंग या त्रुटि संदेश प्रोग्रामेटिक रूप से दिखा सकते हैं।

0

एक असली त्वरित गूगल यह दिया:

/Document/Tests/not(*) 
1

हाँ आप निम्न xpath का उपयोग "/ दस्तावेज/टेस्ट [नोड()]" यह आपको दे देंगे कर सकते हैं सब टेस्ट नोड्स जिनमें एक बच्चा नोड होता है। आप वहां नोड नाम देने के साथ-साथ नोड टाइप करने के लिए और भी सुधार कर सकते हैं।

आप एक बच्चे नोड टेस्ट उपयोग कहा जाता है कि विशिष्ट नोड्स चाहते हैं इस "/ दस्तावेज/टेस्ट [टेस्ट]"

अधिक उदाहरण आप MSDN में पा सकते हैं http://msdn.microsoft.com/en-us/library/ms256086.aspx

संबंधित मुद्दे