修改 XElement 值会丢失 CData 类型
我有一个包含一些 CData 节点的 XML 文件。但是当我尝试就地修改它们时:
var doc = XDocument.Load(filename);
foreach(var el in doc.Descendants("foo"))
{
el.Value = el.Value.Replace("bar", "baz");
}
doc.Save(filename);
...它们都丢失了 CData 类型。避免这种情况的最佳方法是什么?谢谢!
I've got an XML file with some CData nodes. But when I try and modify them in situ:
var doc = XDocument.Load(filename);
foreach(var el in doc.Descendants("foo"))
{
el.Value = el.Value.Replace("bar", "baz");
}
doc.Save(filename);
...they all lose their CData types. What's the best way of avoiding that? Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从 XML 的角度来看,CData 和纯文本节点是等效的。因此,您看到的行为是预期的 - Value 永远不会创建 CDATA 节点,因为从 XML 的角度来看不需要它。
如果您必须拥有 CData,则需要显式创建一个。请参阅 http://msdn.microsoft.com/en-例如,us/library/system.xml.xmldocument.createcdatasection.aspx。
CData and plain text nodes are equialent from XML point of view. So the behavior you see is expected - Value never creates CDATA nodes as there is no need for it from XML point of view.
If you must have CData you need to explicitly create one. See http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createcdatasection.aspx for an exaple.