Как сделать XDocument.Сохранить написание escape-символов - PullRequest
1 голос
/ 02 марта 2012

Я читаю данные XML из varchar column в SQL db, в linq to sql XElement, принадлежащие XDocument.

Когда я выполняю метод XDocument.Save, XMLзаписывается в файл, но содержит escape-символыНапример,">" изменено на "&gt" и т. Д.
Существует ли простой способ предотвратить это?

1 Ответ

2 голосов
/ 02 марта 2012

Во-первых, кажется, нет причин, чтобы это предотвратить.Как упоминал Кенни, если специальные символы не закодированы в XML, никакой синтаксический анализатор не сможет проанализировать полученный XML (потому что символы «<» или «>» много значат для этого синтаксического анализатора).Во-вторых, когда ваш анализатор декодирует XML (например, вы вызываете XElement.Value), все специальные символы будут преобразованы обратно в то, что они изначально были.Наконец, если вы хотите сохранить исходную строку (например, для целей, отличных от анализа XML), вы можете использовать CDATA, который в случае Linq2XML представлен классом XCData.

EDIT :Как указал Роб, я мог ошибиться.Если нужно сохранить существующий XML-документ, добавив к нему документы без появления специальных символов, используйте следующий код:

XDocument document = new XDocument();
var xmlFromDb = "<xml>content</xml>";
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(xmlFromDb))) 
{
     using (var reader = XmlReader.Create(stream)) {
          reader.MoveToContent();
          document.Add(XElement.ReadFrom(reader));
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...