从xml文件中删除无效字符的最简单方法?

时间:2012-03-13 09:09:45

标签: c# xml character

我有一个包含无效字符的xml文件。我通过互联网搜索,除了将文件作为文本文件读取并逐个替换无效字符之外,没有找到任何其他方法。

有人可以告诉我从xml文件中删除无效字符的最简单方法..

ex xml stream:

<Year>where 12 > 13 occures </Year>

2 个答案:

答案 0 :(得分:3)

我会尝试HtmlAgilityPack。至少比尝试手动解析更好。

HtmlAgilityPack.HtmlDocument hdoc = new HtmlAgilityPack.HtmlDocument();
hdoc.LoadHtml("<Year>where 12 > 13 occures </Year>");

using(StringWriter wr = new StringWriter())
{
   using (XmlWriter xmlWriter = XmlWriter.Create(wr,
           new XmlWriterSettings() { OmitXmlDeclaration = true }))
   {
       hdoc.Save(xmlWriter);
       Console.WriteLine(wr.ToString());
   }
}

此输出:

<year>where 12 &gt; 13 occures </year>

答案 1 :(得分:0)

首先以不同的方式思考问题。您的问题是输入不是有效的XML。所以你实际上想要从非XML文件中删除无效字符。这可能听起来很迂腐,但它立即表明,为处理XML而设计的工具对您没用,因为您的输入不是XML。

在源头修复问题总是比以后尝试修复损坏更好。但是,您将着手实施修复策略,首先要准确定义要修复的数据中的哪些故障以及您打算如何修复它们。明确说明您对解决方案应用的约束也是一个好主意:例如,如果您的修复意外更改了任何注释或CDATA部分的内容,这是否重要?

定义修复策略后: “如果没有紧跟#nn;或#xnn;或者名字后跟';',则替换任何&amp; by &amp;,编码就变得非常简单。