首页 文章

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

提问于
浏览
1

该程序采用一个混合在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

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

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

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

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

相关问题