다음은 현재 XMLDocument 를 String으로 변환하는 방법입니다.
StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);
xmlDoc.WriteTo(xmlTextWriter);
return stringWriter.ToString();
이 방법의 문제점은 “ (속성에있는 인용 부호)가 있으면이를 이스케이프한다는 것입니다.
인스턴스의 경우 :
<Campaign name="ABC">
</Campaign>
위는 예상되는 XML입니다. 그러나 그것은 반환
<Campaign name=\"ABC\">
</Campaign>
String.Replace “\”를 할 수 있지만 그 방법은 괜찮습니까? 부작용이 있습니까? XML 자체에 “\” 가 포함되어 있으면 제대로 작동합니까 ?
답변
따옴표가 없습니다. VS 디버거 일뿐입니다. 콘솔로 인쇄하거나 파일로 저장해보십시오. 참고로 항상 일회용 물체를 폐기하십시오.
using (var stringWriter = new StringWriter())
using (var xmlTextWriter = XmlWriter.Create(stringWriter))
{
xmlDoc.WriteTo(xmlTextWriter);
xmlTextWriter.Flush();
return stringWriter.GetStringBuilder().ToString();
}
답변
xmlDoc이 XmlDocument 객체라고 가정하면 xmlDoc.OuterXml에 어떤 문제가 있습니까?
return xmlDoc.OuterXml;
OuterXml 속성 은 XML의 문자열 버전을 반환합니다.
답변
당신이 사용하는 경우 Windows.Data.Xml.Dom.XmlDocument
버전 XmlDocument
(예를 들어 UWP 응용 프로그램에서 사용)을, 당신이 사용할 수있는 yourXmlDocument.GetXml()
문자열로 XML을 얻을 수 있습니다.
답변
확장 방법으로 :
public static class Extensions
{
public static string AsString(this XmlDocument xmlDoc)
{
using (StringWriter sw = new StringWriter())
{
using (XmlTextWriter tx = new XmlTextWriter(sw))
{
xmlDoc.WriteTo(tx);
string strXmlText = sw.ToString();
return strXmlText;
}
}
}
}
이제 간단하게 사용하십시오.
yourXmlDoc.AsString()
답변
"
\"
디버거와 같이 표시 되지만 문자열에서 데이터가 정확하므로 아무것도 바꿀 필요가 없습니다. 문자열을 파일로 덤프하면 문자열이 올바른 것입니다.