如何XDocument.Save编写转义字符

时间:2012-03-02 12:49:22

标签: c# linq-to-sql

我正在从varchar column中的SQL db读取属于linq to sql XElement的{​​{1}}的XML数据。

当我执行XDocument方法时,XML被写入文件但包含转义字符。例如。 XDocument.Save已更改为">"等 有没有一种简单的方法可以防止这种情况发生?

1 个答案:

答案 0 :(得分:2)

首先,似乎没有理由阻止它。与kenny一样,除非特殊字符是XML编码的,否则解析器无法解析生成的XML(因为'<'或'>'字符对于该解析器意味着很多)。其次,当您的解析器解码XML(例如,您调用XElement.Value)时,所有特殊字符都将转换回原来的字符。最后,如果你想保留原始字符串(例如用于XML解析以外的目的),你可以使用CDATA,如果Linq2XML由XCData类表示。

编辑:正如Rob指出的那样,我可能错了。如果要保存将现有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));
     }
}