선언을 명시 적으로 작성하거나 a 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();
.NET의 암시 적 인코딩이기 때문에 utf-16을 인코딩으로 사용 StringWriter
합니다. StringWriter
예 를 들어 항상 UTF-8을 사용 하는 것과 같이의 하위 클래스를 생성하여 직접 영향을 미칠 수 있습니다 .