我正在从varchar column
中的SQL db
读取属于linq to sql XElement
的{{1}}的XML数据。
当我执行XDocument
方法时,XML被写入文件但包含转义字符。例如。 XDocument.Save
已更改为">"
等
有没有一种简单的方法可以防止这种情况发生?
答案 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));
}
}