首先要做的事情:我很清楚使用Regex解析XML是一个坏主意。也就是说,这种XML格式错误,使用XML解析器将大大改变输出(充其量),并使输出对消耗它的引擎无效。它是由第三方定义的专有规范,我无法控制它。
鉴于范围有限,使用Regex / XML的典型问题不会成为问题,如何定义正则表达式来捕获以下内容:
<ns:elementname attr="value">
arbitrary data/child nodes here
</ns:elementname>
我试过了:
var tOut5 = Regex.Replace(entry,
@"<ns:elementname(.*?)ns:elementname>",
"", RegexOptions.Multiline);
以及其他一些变种。
使用HTMLAgilityPack我尝试过:
var doc = new HtmlDocument();
doc.OptionWriteEmptyNodes = true;
doc.LoadHtml(text);
var Elements = doc.DocumentNode.Descendants()
.Where(n => n.Name == "ns:elementname");
用于选择节点,但在保存输出时,它会影响其他节点作为副产品呈现的方式。
我也对其他建议持开放态度,但请记住,整个文档中唯一可以更改的部分是此节点,并且XML格式错误,无法与大多数解析器一起使用。
答案 0 :(得分:1)
在Regex测试仪中,这对我有用。注意使用SingleLine,它使(。)匹配每个字符,包括换行符。
<ns:elementname(.+?)>.+?</ns:elementname>