替换XML中的混合内容(纯文本+标签)

时间:2015-01-21 01:35:25

标签: c# xml

该程序采用一个混合在html和自定义标签之间的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>

有没有办法在不使用所有正则表达式的情况下进行这种替换?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

使用字符串,您将用文本节点替换元素。您想首先创建一个新的XElement并将其用于替换。

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