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

本文关键字:字符 最简单 方法 无效 删除 xml 文件 | 更新日期: 2023-09-27 18:27:31

我有一个包含无效字符的xml文件。我在网上搜索了一下,除了将文件作为文本文件读取并逐个替换无效字符外,没有找到其他方法。

有人能告诉我一个从xml文件中删除无效字符的最简单方法吗。。

ex-xml流:

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

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

我会尝试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>

从不同的角度思考问题开始。您的问题是输入不是有效的XML。因此,您实际上想要从非XML文件中删除无效字符。这听起来可能有些迂腐,但它立即表明,为处理XML而设计的工具对您毫无用处,因为您的输入不是XML。

从源头上解决问题总是比以后试图修复损坏要好。但如果你要开始修复策略,首先要准确定义你想修复数据中的哪些故障,以及你打算如何修复它们。清楚地说明您对解决方案应用了哪些约束也是一个好主意:例如,如果您的修复意外更改了任何注释或CDATA部分的内容,这有关系吗?

一旦你定义了你的修复策略:例如,"用&amp;替换任何&,如果它没有立即后跟#nn;或#xnn;或名称后跟‘;’,那么对它进行编码就变得非常简单了。