Преобразование XmlDocument в String

Вот как я сейчас конвертирую XMLDocument в Строка

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 содержит "\"

Ответ 1

Нет кавычек. Это просто отладчик VS. Попробуйте выполнить печать на консоль или сохранить в файл, и вы увидите. В качестве примечания: всегда располагайте одноразовые объекты:

using (var stringWriter = new StringWriter())
using (var xmlTextWriter = XmlWriter.Create(stringWriter))
{
    xmlDoc.WriteTo(xmlTextWriter);
    xmlTextWriter.Flush();
    return stringWriter.GetStringBuilder().ToString();
}

Ответ 2

Предполагая, что xmlDoc является объектом XmlDocument, в чем проблема с xmlDoc.OuterXml?

return xmlDoc.OuterXml;

Свойство OuterXml возвращает строчную версию xml.

Ответ 3

Если вы используете Windows.Data.Xml.Dom.XmlDocument версию XmlDocument (например, в приложениях UWP), вы можете использовать yourXmlDocument.GetXml(), чтобы получить XML в виде строки.

Ответ 4

В качестве метода расширения:

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

Ответ 5

" отображается как \" в отладчике, но данные верны в строке, и вам не нужно ничего заменять. Попробуйте сбросить строку в файл, и вы заметите, что строка верна.