Преобразование 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
"
отображается как \"
в отладчике, но данные верны в строке, и вам не нужно ничего заменять. Попробуйте сбросить строку в файл, и вы заметите, что строка верна.