सी # में एक्सएमएल क्रमबद्धता का उपयोग करते समय, मैं अपने इनपुट एक्सएमएल के एक हिस्से को एक्सएमएलएनोड में deserialize करना चाहता हूं।एक तत्व को XmlNode के रूप में deserialize कैसे करें?
तो, यह एक्सएमएल दिया:
<Thing Name="George">
<Document>
<subnode1/>
<subnode2/>
</Document>
</Thing>
मैं एक XmlNode के लिए दस्तावेज़ तत्व deserialize करना चाहते हैं।
नीचे मेरा एक्सएमएल दिया गया है जो एक्सएमएल को ऊपर दिया गया है, 'दस्तावेज़' तत्व के बजाय 'सबनोड 1' तत्व को दस्तावेज़ सेट करता है।
दस्तावेज़ तत्व को दस्तावेज़ तत्व में सेट करने के लिए कोड कैसे प्राप्त होगा?
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
[Serializable]
public class Thing
{
[XmlAttribute] public string Name {get;set;}
public XmlNode Document { get; set; }
}
class Program
{
static void Main()
{
const string xml = @"
<Thing Name=""George"">
<Document>
<subnode1/>
<subnode2/>
</Document>
</Thing>";
var s = new XmlSerializer(typeof(Thing));
var thing = s.Deserialize(new StringReader(xml)) as Thing;
}
}
हालांकि, जब मैं एक XmlSerializer का उपयोग बात का एक उदाहरण के लिए ऊपर एक्सएमएल deserialize करने के लिए, दस्तावेज़ संपत्ति चाइल्ड तत्व 'subnode1', बल्कि 'दस्तावेज़' तत्व से होता है।
मैं XmlSerializer को दस्तावेज़ 'दस्तावेज़' तत्व वाले XmlNode में सेट करने के लिए कैसे प्राप्त कर सकता हूं?
(एनबी: मैं प्रकार XmlElement [] की संपत्ति को निर्दिष्ट और यह [XmlAnyElement] चिह्नित करके दस्तावेज़ तत्व को प्राप्त कर सकते हैं, लेकिन वह नहीं बल्कि सिर्फ एक एक का नाम से सभी अपरिचित तत्वों की सरणी के लिए सेट है ' दस्तावेज़ ')
हमम। यह एक गूढ़ व्यक्ति है! DataContractSerializer भी वही व्यवहार प्रदर्शित करता है। –
संरचना हमेशा दस्तावेज़/सबनोड 1, दस्तावेज़/सबनोड 2 है, या उपनोड 3, सबनोड 4 इत्यादि होगा? यदि हां, तो क्या आप स्कीमा को दस्तावेज़/उपनोड में संशोधित करने के इच्छुक होंगे (subnode minOccurs = 0, maxOccurs = unbounded)? – code4life
दस्तावेज़ की सामग्री पूरी तरह से मुक्त रूप है, यह दिखाने के लिए एक उदाहरण के रूप में है कि दस्तावेज का पहला बच्चा नोड deserializer द्वारा कैसे चुना जाता है। – mackenir