व्यावहारिक होने के नाते, XDocument
बनाम XmLDocument
सभी या कुछ भी नहीं नहीं है (जब तक आप सिल्वरलाइट पर हैं) - तो अगर XmlDoucument
कुछ आप की जरूरत है, और XDocument
, तो शायद का उपयोग नहीं करता XmlDocument
(ImportNode
आदि के साथ)।
यह कहा गया है कि XDocument
के साथ भी, आप संभावित रूप से का उपयोग प्रत्येक आयात करने के लिए कर सकते हैं, फिर केवल .Add
इसे मुख्य संग्रह में उपयोग कर सकते हैं।
बेशक, यदि फ़ाइलें बड़ी हैं, XmlReader/XmlWriter
अधिक कुशल हो सकती है ... लेकिन अधिक जटिल। सौभाग्य से, XmlWriter
में WriteNode
विधि है जो XmlReader
स्वीकार करती है, ताकि आप XmlReader
में पहले बच्चे पर नेविगेट कर सकें और फिर इसे आउटपुट फ़ाइल में ब्लिट्ज कर सकें। कुछ की तरह:
static void AppendChildren(this XmlWriter writer, string path)
{
using (XmlReader reader = XmlReader.Create(path))
{
reader.MoveToContent();
int targetDepth = reader.Depth + 1;
if(reader.Read()) {
while (reader.Depth == targetDepth)
{
writer.WriteNode(reader, true);
}
}
}
}
स्रोत
2008-11-11 08:56:49
धन्यवाद। मुझे खेद है, मैं एक्सएसएल से नफरत करता हूं। मैं निश्चित रूप से एक सी # कोड आधारित समाधान पसंद करेंगे। – Larry
कोई समस्या नहीं, मैं एक्सएसएल से बचने को समझता हूं क्योंकि यह कभी-कभी बहुत भ्रमित हो सकता है। – schnaader