用XML替换混合内容(纯文本+标签)
问题描述:
该程序需要一个混合了html和自定义标签的xml。我要取代这个自定义标签:用XML替换混合内容(纯文本+标签)
<replaceable />
有了这个:
Some text
<div>Other text</div>
的主要问题是,任何框架或库,我可以用它来妥善处理XML(如LinqToXML或的System.Xml)无法获得全部内容。如果尝试像这样:
// replaceable is an XElement for <replaceable />
// content is a string
replaceable.ReplaceWith(content)
它最终全部作为转义文本,并作为XElement的值。
如果我尝试XElement.Parse()方法,就像这里提出的其他问题一样,我在开始处丢失了纯文本,只剩下<div>
。
有没有办法做到这种类型的替换,而不是所有的正则表达式呢?
答
在解析它之前,您需要将内容包装到标签中,以便XElement.Parse()
可以为您提供所有节点。
var outer = XElement.Parse("<dummy>" + content + "</dummy>");
replaceable.ReplaceWith(outer.Nodes());
答
使用字符串将元素替换为文本节点。你想先创建一个新的XElement
并用它来替换。
replaceable.ReplaceWith(new XElement("div", otherText));
我实际上是在包装它。但是这让我意识到我愚蠢的错误。我正在使用outer.Elements()而不是Nodes()。谢谢,那很快又简单 – GalmWing 2015-01-21 01:43:35