我维护 JDOM project我正在尝试在 Android 上“认证”它。大多数事情都可以正常工作,但 XML Schema 验证被证明是有问题的......
我的问题是:有没有办法在 Android 上进行 XMLSchema 验证?如果有,怎么做?
以前有人问过这样的问题,但没有给出确凿的答案:
这是我目前“知道”的(如果我错了,请纠正我)...:
- SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema ") - 因 IllegalArgumentException 而失败
- Harmony 项目中 Android 中的默认“ExpatParser”不支持 XMLSchema 验证。
- 可以在 Android 应用程序中加载 Xerces,甚至对其进行解析,但不能进行 Validating 解析 - 当您尝试时,您会收到导致应用程序崩溃的“致命”Android 异常。
我已经为此工作了一段时间,我整理了以下“研究”:
如果有人有任何关于 Android 上 XMLSchema 验证的更多信息,我将不胜感激。
如果有人成功地对 XML 进行了 XMLSchema 验证,并且可以帮助我获得适用于 JDOM 的功能,他们将获得数千个互联网点... ;-) 并将在 JDOM 代码和提交消息中永垂不朽。
最佳答案
令我着迷的是,几年后,这仍然是一个悬而未决的问题。 不过,似乎只有坏消息。根据AOSP Issue Tracker标准 Android API 目前似乎不支持模式验证,而且 Google 似乎不愿意修复它:
Our XML APIs (including SAX, XmlPull and DOM) don't support any of the following:
XML Schema XML DTDs (including external entity declarations and references) validation element content whitespace
但是,同一张票的一位评论者引用了 workaround ,并提供使用 Xerces 端口的示例代码。到目前为止,我不知道这是否超出了您的想象,但我希望它有所帮助。
总结一下: SchemaFactoryFinder只知道以下 Schema 定义:
- W3C_XML_SCHEMA10_NS_URI = "http://www.w3.org/XML/XMLSchema/v1.0 "
- W3C_XML_SCHEMA10_NS_URI = "http://www.w3.org/XML/XMLSchema/v1.1 "
使用任何其他模式定义会导致它失败(但它会在调试级别上记录)。显然,您就是这种情况,因为您使用的是对 2011 模式的另一个引用。所以“正确”引用模式定义应该可以解决这个问题。
关于android - Android 上的 XMLSchema 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10274555/