Ant*_*ula 13 .net xml xmltextreader
我从第三方获得了一个我必须在我的应用程序中导入的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>
Run Code Online (Sandbox Code Playgroud)
下面的关键信息是,除非您知道输入文件的确切格式,并保证与 XML 的任何偏差都是一致的,否则您无法以编程方式进行修复,否则会冒修复不正确的风险。
当且仅当以下情况时,通过替换&
为来修复它是可接受的解决方案:&
这些数据没有可接受的格式良好的来源。
这是一次性(或至少极其罕见)的导入。
您可以不断迭代,为其设计新的修复程序,并在遇到每个问题时添加解决方案。
&
字符“修复”了它,还会出现其他错误。您有资源手动检查“固定”数据的完整性。
文档中没有格式正确的实体 -
简单地替换&
为&
将错误地更改"
为&quot;
。您也许能够解决这个问题,但不要天真地认为它可能有多么棘手(实体可能在 DTD 中定义,可能引用 unicode 代码点...)
如果是一个行为不当的特定元素,您可以考虑用 包装该元素的内容 <![CDATA
]]>
,但这仍然依赖于您能够可靠地找到开始和结束标记。