XmlReader
ही xml टुकड़ा के समर्थन पढ़ने करता है - जो कि
var settings = new XmlReaderSettings { ConformanceLevel = ConformanceLevel.Fragment };
using (var reader = XmlReader.Create("fragment.xml", settings))
{
// you can work with reader just fine
}
हालांकि XDocument.Load
खंडित एक्सएमएल के पढ़ने का समर्थन नहीं करता।
XDocument.Parse
का आह्वान करने से पहले त्वरित और गंदा तरीका एक आभासी रूट के नीचे नोड्स को लपेटना है। पसंद:
var fragments = File.ReadAllText("fragment.xml");
var myRootedXml = "<root>" + fragments + "</root>";
var doc = XDocument.Parse(myRootedXml);
यह दृष्टिकोण छोटी xml फ़ाइलों तक सीमित है - क्योंकि आपको पहले स्मृति में फ़ाइल को पढ़ना है; और बड़ी स्ट्रिंग को संयोजित करने का मतलब है स्मृति में बड़ी वस्तुओं को स्थानांतरित करना - जो सबसे अच्छा बचा है।
यदि प्रदर्शन मामलों आप XmlReader
@ मार्टिन-Honnen के जवाब (https://stackoverflow.com/a/18203952/2440262)
उत्कृष्ट में के रूप में समझाया आप एपीआई कि दी कि XmlReader
दोहराता के लिए ले जाता है का उपयोग करते हैं के माध्यम से XDocument
एक-एक करके में नोड्स पढ़ने जाना चाहिए वैध एक्सएमएल, और प्रदर्शन मामलों पर, आप के बजाय शामिल हो गए धारा दृष्टिकोण का उपयोग कर सकते हैं:
using (var jointStream = new MultiStream())
using (var openTagStream = new MemoryStream(Encoding.ASCII.GetBytes("<root>"), false))
using (var fileStream =
File.Open(@"fragment.xml", FileMode.Open, FileAccess.Read, FileShare.Read))
using (var closeTagStream = new MemoryStream(Encoding.ASCII.GetBytes("</root>"), false))
{
jointStream.AddStream(openTagStream);
jointStream.AddStream(fileStream);
jointStream.AddStream(closeTagStream);
using (var reader = XmlReader.Create(jointStream))
{
// now you can work with reader as if it is reading valid xml
}
}
MultiStream - उदाहरण के लिए देखें https://gist.github.com/svejdo1/b9165192d313ed0129a679c927379685
नोट: XDocument
पूरे एक्सएमएल को स्मृति में लोड करता है। तो इसे बड़ी फ़ाइलों के लिए उपयोग न करें - इसके बजाय XmlReader
को पुनरावृत्ति के लिए उपयोग करें और XElement
XNode.ReadFrom(...)
स्रोत
2013-08-12 11:54:28
'XDocument.Load' काम नहीं करता है, क्योंकि उस तरह की फ़ाइल वैध XML दस्तावेज़ नहीं है। – MarcinJuraszek
क्या आप वह कोड पोस्ट कर सकते हैं जिसे आपने अभी तक आजमाया है? – christiandev
अलग-अलग प्रश्न, एक ही उत्तर: http://stackoverflow.com/a/9378442 – dtb