या तो स्पष्ट रूप से घोषणा लिखें, या StringWriter
कॉल और कॉल का उपयोग करें Save()
:
using System;
using System.IO;
using System.Text;
using System.Xml.Linq;
class Test
{
static void Main()
{
string xml = @"<?xml version='1.0' encoding='utf-8'?>
<Cooperations>
<Cooperation />
</Cooperations>";
XDocument doc = XDocument.Parse(xml);
StringBuilder builder = new StringBuilder();
using (TextWriter writer = new StringWriter(builder))
{
doc.Save(writer);
}
Console.WriteLine(builder);
}
}
आप आसानी से इसे विस्तार विधि के रूप में जोड़ सकते हैं:
public static string ToStringWithDeclaration(this XDocument doc)
{
if (doc == null)
{
throw new ArgumentNullException("doc");
}
StringBuilder builder = new StringBuilder();
using (TextWriter writer = new StringWriter(builder))
{
doc.Save(writer);
}
return builder.ToString();
}
यह लाभ है कि यह धमाका नहीं होगा अगर कोई घोषणा नहीं है :)
तो आप का उपयोग कर सकते हैं:
string x = doc.ToStringWithDeclaration();
ध्यान दें कि जो utf-16 को एन्कोडिंग के रूप में उपयोग करेगा, क्योंकि इसमें अंतर्निहित एन्कोडिंग है StringWriter
। आप अपने आप को प्रभावित कर सकते हैं, हालांकि StringWriter
, उप-वर्ग बनाकर , उदाहरण के लिए हमेशा यूटीएफ -8 का उपयोग करें ।