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

вот как я в настоящее время преобразования объект XmlDocument to строка

StringWriter stringWriter = new StringWriter();
XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);

xmlDoc.WriteTo(xmlTextWriter);

return stringWriter.ToString();

проблема с этим методом заключается в том, что если у меня есть " ((кавычки), которые у меня есть в атрибутах), он избегает их.

Например:

<Campaign name="ABC">
</Campaign>

выше-ожидаемый XML. Но он возвращается

<Campaign name="ABC">
</Campaign>

Я могу сделать строку.Заменить "" но этот метод в порядке? Есть ли побочные эффекты? Будет ли это работать нормально, если Сам XML содержит ""

5 ответов


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

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

предположим, есть объект XmlDocument xmlDoc что с 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()

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