XmlDocument का उपयोग करके XML विशेषता पढ़ें


80

मैं C # XmlDocument का उपयोग करके XML विशेषता कैसे पढ़ सकता हूं?

मेरे पास एक XML फ़ाइल है जो कुछ इस तरह दिखती है:

<?xml version="1.0" encoding="utf-8" ?>
<MyConfiguration xmlns="http://tempuri.org/myOwnSchema.xsd" SuperNumber="1" SuperString="whipcream">
    <Other stuff />
</MyConfiguration> 

मैं XML विशेषताएँ SuperNumber और SuperString कैसे पढ़ूंगा?

वर्तमान में मैं XmlDocument का उपयोग कर रहा हूं, और मुझे XmlDocument का उपयोग करने के बीच में मान मिलते हैं GetElementsByTagName()और यह वास्तव में अच्छी तरह से काम करता है। मैं अभी पता नहीं लगा सकता कि कैसे विशेषताएँ प्राप्त करें?

जवाबों:


115
XmlNodeList elemList = doc.GetElementsByTagName(...);
for (int i = 0; i < elemList.Count; i++)
{
    string attrVal = elemList[i].Attributes["SuperString"].Value;
}

बहुत बहुत धन्यवाद। यह वास्तव में काम करता है और इसे किसी भी पथ और कुछ भी नहीं चाहिए। बस शानदार !!
नानी

88

आपको XPath में देखना चाहिए । एक बार जब आप इसका उपयोग करना शुरू कर देते हैं, तो आपको सूचियों के माध्यम से पुनरावृत्ति करने की तुलना में इसका बहुत अधिक कुशल और आसान कोड मिल जाएगा। इससे आपको अपनी मनचाही चीजें सीधे मिल भी सकती हैं।

फिर कोड कुछ इसी तरह का होगा

string attrVal = doc.SelectSingleNode("/MyConfiguration/@SuperNumber").Value;

ध्यान दें कि XPath 3.0 8 अप्रैल 2014 को W3C सिफारिश बन गया।


8

आप XmlDocument के बजाय XDocument पर माइग्रेट कर सकते हैं और यदि आप उस वाक्यविन्यास को पसंद करते हैं तो Linq का उपयोग कर सकते हैं। कुछ इस तरह:

var q = (from myConfig in xDoc.Elements("MyConfiguration")
         select myConfig.Attribute("SuperString").Value)
         .First();

8

मेरे पास एक Xml फ़ाइल books.xml है

<ParameterDBConfig>
    <ID Definition="1" />
</ParameterDBConfig>

कार्यक्रम:

XmlDocument doc = new XmlDocument();
doc.Load("D:/siva/books.xml");
XmlNodeList elemList = doc.GetElementsByTagName("ID");     
for (int i = 0; i < elemList.Count; i++)     
{
    string attrVal = elemList[i].Attributes["Definition"].Value;
}

अब, attrValका मान है ID


5

XmlDocument.Attributesशायद? (जो एक विधि GetNamedItem है जो संभवतः आप क्या चाहते हैं, हालांकि मैंने हमेशा विशेषता संग्रह को पुनरावृत्त किया है)


1

मान लें कि आपका उदाहरण दस्तावेज़ स्ट्रिंग चर में है doc

> XDocument.Parse(doc).Root.Attribute("SuperNumber")
1

1

यदि आपके XML में नाम स्थान हैं, तो आप किसी विशेषता का मान प्राप्त करने के लिए निम्न कार्य कर सकते हैं:

var xmlDoc = new XmlDocument();

// content is your XML as string
xmlDoc.LoadXml(content);

XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable());

// make sure the namespace identifier, URN in this case, matches what you have in your XML 
nsmgr.AddNamespace("ns", "urn:oasis:names:tc:SAML:2.0:protocol");

// get the value of Destination attribute from within the Response node with a prefix who's identifier is "urn:oasis:names:tc:SAML:2.0:protocol" using XPath
var str = xmlDoc.SelectSingleNode("/ns:Response/@Destination", nsmgr);
if (str != null)
{
    Console.WriteLine(str.Value);
}

एक्सएमएल पर अधिक नामस्थान यहाँ और यहाँ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.