Uto*_*Ltd 6 c# xml linq linq-to-xml
我有一个小实用程序,通过使用LINQ查找XML文件中的某些内容.它可以非常快速而且很好地处理它们的大量集合.但是,某些批处理文件中大约有20%无法读取并被跳过,因为程度符号°在文件中的存在而失败.这是"对未申报实体'deg'的引用." 一个先前的问题是什么.
上一个问题中提供的解决方案无法直接应用于此处.我不能自由地修改文件,并且复制它们并替换实例或在副本中插入标签似乎效率低下.让LINQ忽略未声明的实体的最佳方法是什么,这与我的程序无关紧要?或者是否有一种很好的方法可以让XDocument.Load预先提供一些实体声明?
不幸的是,实体构成了 XML 格式良好规则的一部分(2.1 格式良好的 XML 文档)。看起来您是在说您想要XDocument.Load加载名义上的 XML 文件,但实际上不符合规则,而且它不会这样做,这是相当合理的。
如果您的用户向您传递的内容应该是 XML 文件,但其中包含未定义的实体,那么您必须让他们以有效格式提供文件,或者在加载时自行管理不正确性,方法如下:已被建议。
在我看来,从你的限制来看,最巧妙的方法是遵循链接到的示例并创建一些settings传递到XMLReader沿着(验证 DOM 中的 XML 文档)的行。
如果存在未定义且未在公共模式中列出的实体,您需要创建自己的模式来定义您需要的所有实体。因此,创建一个通用的settings引用XMLReader您自己的自定义架构。当某些文件无法加载时,将必要的实体添加到此架构中,然后您将构建需要定义的所有实体的列表,以使 XML 文件有效。
然后,对于您尝试加载的每个文档,XMLReader使用上述内容创建文件settings并调用 XDocument(XMLReader) 重载。
| 归档时间: |
|
| 查看次数: |
1790 次 |
| 最近记录: |