XmlDocument를 문자열로 변환 xmlTextWriter = new XmlTextWriter(stringWriter); xmlDoc.WriteTo(xmlTextWriter); return stringWriter.ToString(); 이 방법의

다음은 현재 XMLDocumentString으로 변환하는 방법입니다.

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()

답변

"\"디버거와 같이 표시 되지만 문자열에서 데이터가 정확하므로 아무것도 바꿀 필요가 없습니다. 문자열을 파일로 덤프하면 문자열이 올바른 것입니다.