【发布时间】:2017-08-19 21:45:13
【问题描述】:
我有一个无法自行修改的 XML 文件。它包含以下根元素:
<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" noNamespaceSchemaLocation="some.xsd">
如您所见,noNamespaceSchemaLocation 缺少前缀 xsi:。这会导致XmlReader 在验证时找不到架构信息。如果我添加前缀一切都很好。但正如我所说,我无法修改 XML 文件(除了测试)。我从外部来源获取它们,我的工具应该会自动验证它们。
是否有可能使 XmlReader 解释 noNamespaceSchemaLocation 而没有 xsi: 前缀?我不想在预处理步骤或类似的步骤中在 XML 中添加前缀,因为源应该完全保持原样。
【问题讨论】:
-
根据您的外部来源,您为什么不为他们提交错误报告?
-
如何验证您的 Xml?
XmlValidatingReader? -
@Staeff 不幸的是,这没用。他们不会修复它,因为他们不会验证自己的来源。这只是冰山一角。你不会相信他们称之为 XML 的东西。当我们需要数据时,我们必须处理它。我们取得了一些小胜利,但如果他们改变某些东西,则需要几个月的时间。
-
@xanatos
XmlReader和XmlReaderSettings。 -
@xanatos 如何使用 XmlReader 和 XmlReadersettings 如果我的包含 XSD 的 Uri 具有前缀,例如 foo://path/name.xsd
标签: c# .net xml namespaces schema