在处理无效XML之前编码特殊字符

时间:2014-06-14 16:15:30

标签: c# .net xml xml-parsing

我有一些我需要处理的供应商的无效XML。这是一个例子:

<a>foo</a>
<b>bar</b>
<c>foobar is < $15</c>

所以,我们遇到了一些问题。首先,没有根文档。我通过添加根文档克服了这个问题。没问题。第二个也是更困难的问题是不足象征。我只能对整个事物进行编码,但它会对XML标记进行编码。是否有一个库或简单的方法在那里处理这个?我真的不想重新发明轮子,因为我确信有数百人像这样处理过“准XML”。感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

我会逐行读取文件并使用正则表达式来获取节点之间的值。您的示例没有嵌套元素,因此这很容易。在逐行阅读时,您可以替换编码内部值。命名的捕获组(?。*?)将节点之间的所有内容都放入名为xml的组中。

var regex = "<.*?>(?<xml>.*?)</.*?>"
var badXML = Regex.Match(line, regex , RegexOptions.IgnoreCase).Groups["xml"].Value;