दिलचस्प पोस्ट
Windows.Forms.Timer या सिस्टम। थ्रेडिंग। टाइमर पीडीएफ में एचटीएमएल को एनएटीटी में कनवर्ट करें वेक्टर विकास के बारे में मैं एंड्रॉइड के लिए कॉल लॉग का उपयोग कैसे करूं? Windows में पायथन स्क्रिप्ट निष्पादित करने के लिए कैसे? जेसन मैपिंग एक्सपैशन: प्रकार के लिए कोई उपयुक्त कन्स्ट्रक्टर नहीं मिला : JSON ऑब्जेक्ट से इन्स्तांत नहीं हो सकता अजाक्स अपडेट (अपडेटपैनल) के बाद jQuery में रिबंडिंग इवेंट्स पायथन डिक्शनरी में एक कुंजी के लिए एकाधिक मान जोड़ें जब तक एक प्रभाव समाप्त होने तक प्रतीक्षा करने के लिए jQuery कैसे प्राप्त करें? में या एसक्यूएल WHERE खंड में एक स्ट्रिंग में बाइट्स कनवर्ट करें? TypeScript फ़ंक्शन ओवरलोडिंग आंशिक से एक रेजर सेक्शन पॉप्युलेट करें वर्चुअलबॉक्स आभासी मशीन से स्थानीय होस्ट को संबोधित करते हुए सीमके: किस क्रम में फाइलें पार्सेड (कैशे, टूलचैन, …) हैं?

XmlDocument.SelectSingleNode और xmlNamespace समस्या

मैं XML स्ट्रिंग को लोड कर रहा हूँ जिसमें निम्न संरचना है:

<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <Compile Include="clsWorker.cs" /> </ItemGroup> </Project> 

तो सभी को xmldocument में लोड हो रहा है:

 XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(Xml); 

तो निम्न समस्या होती है:

 XmlNode Node = xmldoc.SelectSingleNode("//Compile"); // return null 

जब मैं जड़ तत्व (प्रोजेक्ट) से काम करता है, तो मैं अपने चयन सेलिंगनोड को प्रासंगिक तत्व लौटने के लिए कैसे बेहतर कर सकता हूँ?

वेब के समाधान से एकत्रित समाधान "XmlDocument.SelectSingleNode और xmlNamespace समस्या"

आपको अपनी कॉल में एक XmlNamespaceManager का उपयोग करना चाहिए SelectSingleNode () :

 XmlNamespaceManager ns = new XmlNamespaceManager(xmldoc.NameTable); ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003"); XmlNode node = xmldoc.SelectSingleNode("//msbld:Compile", ns); 

MSDN पर SelectSingleNode() के दस्तावेज़ीकरण से सही लिया गया है :

ध्यान दें
यदि XPath अभिव्यक्ति में कोई उपसर्ग शामिल नहीं है, तो यह माना जाता है कि नेमस्पेस यूआरआई खाली नामस्थान है यदि आपके XML में एक डिफ़ॉल्ट नेमस्पेस शामिल है, तो आपको अभी भी XmlNamespaceManager पर एक उपसर्ग और नामस्थान यूआरआर जोड़ना होगा; अन्यथा, आपको चयनित नोड नहीं मिलेगा अधिक जानकारी के लिए, XPath नेविगेशन का उपयोग कर चयन नोड्स देखें।

और तुरंत निम्नलिखित नमूना कोड है

 XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("ab", "http://www.lucernepublishing.com"); XmlNode book = doc.SelectSingleNode("//ab:book", nsmgr); 

ऐसा नहीं है कि यह " गुप्त ज्ञान " होगा 😉

चूंकि 'मद समूह' में कई 'संकलन' वाले बच्चे हो सकते हैं, और आप विशेष रूप से 'प्रोजेक्ट / मद समूह' के बच्चों को 'संकलन' चाहते हैं, निम्न सभी इच्छित 'संकलन' बच्चों को और कोई अन्य नहीं लौटाएंगे:

 XmlDocument projectDoc = new XmlDocument(); projectDoc.Load(projectDocPath); XmlNamespaceManager ns = new XmlNamespaceManager(projectDoc.NameTable); ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003"); XmlNodeList xnList = projectDoc.SelectNodes(@"/msbld:Project/msbld:ItemGroup/msbld:Compile", ns); 

ध्यान दें कि 'एमएसबीएलडी:' नेमस्पेस विनिर्देशन को प्रत्येक नोड स्तर से पहले होना चाहिए।