के साथ प्रश्न XDocument क्वेरी दृश्य स्टूडियो * .csproj फ़ाइल से तत्वों से पूछने का प्रयास करें। मैंने समस्या का वर्णन करने के लिए एक छोटा सा उदाहरण बनाया:xmlns विशेषता (नेमस्पेस)
// Working
string xml1 = @"<Project ToolsVersion='4.0'>
<ItemGroup Label='Usings'>
<Reference Include='System' />
<Reference Include='System.Xml' />
</ItemGroup>
</Project>";
// Not working
string xml2 = @"<Project ToolsVersion='4.0' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>
<ItemGroup Label='Usings'>
<Reference Include='System' />
<Reference Include='System.Xml' />
</ItemGroup>
</Project>";
XDocument doc = XDocument.Parse(xml2);
foreach (XElement element in doc.Descendants("ItemGroup"))
{
Console.WriteLine(element);
}
स्ट्रिंग xml1 ठीक काम करता है, xml2 कुछ भी वापस नहीं करता है। उन स्ट्रिंग्स के बीच एकमात्र अंतर दस्तावेज़ रूट में xmlns विशेषता है।
मैं xmlns विशेषताओं वाले दस्तावेज़ों से कैसे क्वेरी करूं? यह एक समस्या क्यों है जब किसी XML दस्तावेज़ में xmlns विशेषता होती है?
एक और वाक्यविन्यास: 'डॉक्टर। डिस्केन्डेंट्स ("{http://schemas.microsoft.com/developer/msbuild/2003}ItemGroup") ' – ziya
क्षमा करें मुझे समझ में नहीं आता है कि हमें नामस्थान को स्पष्ट रूप से क्यों लिखना है इस दस्तावेज़ के लिए डिफॉल्ट है? यही कारण है कि XElement/XDocument द्वारा यह हल नहीं किया गया है? –
@ फ़ेलिक्सकिइल: क्योंकि जब आप 'एलिमेंट' या 'descendants' कहते हैं तो आप 'XName' निर्दिष्ट कर रहे हैं, जो पूरी तरह से योग्य है ... और पूर्ण-योग्य नाम में नामस्थान शामिल है। मैं आपके बिंदु को देखता हूं, लेकिन मुझे लगता है कि यह समझ में आता है कि यह किस तरह से किया गया है, और LINQ से XML में नेमस्पेस समर्थन मैंने देखा है कि किसी भी XML एपीआई का सबसे अच्छा है। –