android - Android 上的 XMLSchema 验证

标签 android xsd xsd-validation jdom

我维护 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 定义:

使用任何其他模式定义会导致它失败(但它会在调试级别上记录)。显然,您就是这种情况,因为您使用的是对 2011 模式的另一个引用。所以“正确”引用模式定义应该可以解决这个问题。

关于android - Android 上的 XMLSchema 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10274555/

相关文章:

xml - XJC - [错误]编译器无法支持此属性自定义

xsd - xsd :date? 是否需要 Z (Zulu)

java - setContentView(R.layout.main);错误

java - 当 EditText 输入为空时 Android 应用程序崩溃

android - 碰撞在 Box2D 与 Cocos2d Android 中无法正常工作

xsd - 将模式值作为参数或引用动态传递

c# - 如何在 WCF 服务中使用 RequestContext 映射路径

xml - XSD 用于具有任何名称但结构已知的复杂元素

c# - 将俄语语言环境实现到 Unity 文本到 android 的语音识别插件