.net – 修复错误的XML文件(例如,未转义等)

我从第三方得到一个 XML文件,我必须在我的应用程序中导入,而XML具有未转义和不可见的元素.在内部文本中,他们不会修复这个!所以我的问题是处理这个问题的最好办法是什么?

这个XML很大,而且修复必须要快,我的第一个解决方案就是替换&字符与&符号,但真的我不喜欢这个“解决方案”的明显的原因.我不知道如何使用XmlStringReader与这样的XML,因为抛出异常这样的行,所以我不能在内部文本使用HtmlEncode.我试图将XmlTextReader Settings.CheckCharacters设置为false但没有结果.

这是样本&是在元素中,在该领域可以是任何可以在某些公司名称,所以我的替换修补程序可能不适用于其他一些公司名称,我想使用HtmlEncode不知何故,但只有内部的文本当然.

<komitent ID="001398">
  <sifra>001398</sifra>
  <redni_broj>001398</redni_broj>
  <naziv>LJUBICA & ŽARKO</naziv>
  <adresa1>Odvrtnica 27</adresa1>
  <adresa2></adresa2>
  <drzava>HRVATSKA</drzava>
  <grad>Zagreb</grad>
</komitent>
下面的关键信息是,除非您知道输入文件的确切格式,并保证任何与XML的偏差一致,否则您无法以编程方式进行修复,而不会导致您的修订不正确.

通过替换&与& amp; amp;是一个可以接受的解决方案,当且仅当:

>这些数据没有可接受的良好的来源.

>作为@Darin Dimitrov评论,尝试找到一个更好的提供商,或者让该提供商修复它.
> JSON(例如)比较差的XML,比较好,即使你不使用javascript.

>这是一个一个(或至少非常罕见)导入.

>如果你必须在运行时获取它,那么这个解决方案将不起作用.

>您可以继续重复,设计新的修补程序,为您遇到的每个问题添加一个解决方案.

>你可能会发现,一旦你有“固定”它,通过逃避&字符,会有其他错误.

>您有资源手动检查“固定”数据的完整性.

>“修复”的错误可能比您意识到的更微妙.

>文档中没有正确格式化的实体 –

>简单地替换&与& amp; amp;将错误地改变& quot;到& amp; amp.你可能可以解决这个问题,但是不要天真地说明它可能是多么棘手(实体可能在DTD中定义,可能指的是unicode代码点…)>如果它是一个特定的元素,那么你可以考虑使用<![CDATA]]>来包装元素的内容,但仍然依赖于你可以可靠地找到开始和结束标签.

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念