2015-01-21 71 views
1

该程序需要一个混合了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>

有没有办法做到这种类型的替换,而不是所有的正则表达式呢?

回答

0

在解析它之前,您需要将内容包装到标签中,以便XElement.Parse()可以为您提供所有节点。

var outer = XElement.Parse("<dummy>" + content + "</dummy>"); 
replaceable.ReplaceWith(outer.Nodes()); 
+0

我实际上是在包装它。但是这让我意识到我愚蠢的错误。我正在使用outer.Elements()而不是Nodes()。谢谢,那很快又简单 – GalmWing 2015-01-21 01:43:35

0

使用字符串将元素替换为文本节点。你想先创建一个新的XElement并用它来替换。

replaceable.ReplaceWith(new XElement("div", otherText));