239

これが私が現在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 自体に「\」が含まれていても問題なく動作しますか

4

6 に答える 6

700

xmlDoc が XmlDocument オブジェクトであると仮定すると、xmlDoc.OuterXml の問題は何ですか?

return xmlDoc.OuterXml;

OuterXml プロパティは、xmlの文字列バージョンを返します。

于 2010-03-09T07:35:27.350 に答える
203

引用符はありません。それは単なるVSデバッガです。コンソールに出力するか、ファイルに保存してみてください。補足として、常に使い捨てオブジェクトを破棄してください。

using (var stringWriter = new StringWriter())
using (var xmlTextWriter = XmlWriter.Create(stringWriter))
{
    xmlDoc.WriteTo(xmlTextWriter);
    xmlTextWriter.Flush();
    return stringWriter.GetStringBuilder().ToString();
}
于 2010-03-09T07:33:33.490 に答える
11

Windows.Data.Xml.Dom.XmlDocumentのバージョンXmlDocument(UWP アプリなどで使用) を使用している場合は、 を使用しyourXmlDocument.GetXml()て XML を文字列として取得できます。

于 2016-03-01T14:09:07.990 に答える
5

拡張方法として:

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()
于 2012-10-01T19:36:28.687 に答える
2

"デバッガーと同じように表示さ\"れますが、文字列内のデータは正しく、何も置き換える必要はありません。文字列をファイルにダンプしてみると、文字列が正しいことがわかります。

于 2010-03-09T07:35:39.213 に答える