我正在尝试使用 Xerces 针对 xsd 模式文件验证 xml 文件。我遇到了无法解决的错误,下面是 logcat 输出。请注意,在 java 应用程序中尝试相同的代码和 xercesImpl.jar 文件会产生准确的验证结果,但将相同的代码移动到 android 会导致错误。请指教。
E/AndroidRuntime(792): java.lang.NoClassDefFoundError: org.apache.xerces.parsers.SAXParser
谢谢..
我正在尝试使用 Xerces 针对 xsd 模式文件验证 xml 文件。我遇到了无法解决的错误,下面是 logcat 输出。请注意,在 java 应用程序中尝试相同的代码和 xercesImpl.jar 文件会产生准确的验证结果,但将相同的代码移动到 android 会导致错误。请指教。
E/AndroidRuntime(792): java.lang.NoClassDefFoundError: org.apache.xerces.parsers.SAXParser
谢谢..
解决方案是使用移植到 Android 的 Apache Xerces。这里有一个项目
您必须执行 svn chekout 并将 proyect 导出到 jar 文件以用作您的 android proyect 中的库。
SchemaFactory 实例的代码稍作更改。我给你看一个例子:
import mf.javax.xml.validation.Schema;
import mf.javax.xml.validation.SchemaFactory;
import mf.javax.xml.validation.Validator;
import mf.org.apache.xerces.jaxp.validation.XMLSchemaFactory;
SchemaFactory factory = new XMLSchemaFactory();
Schema esquema = factory.newSchema(".../file.xsd");
问题是android没有xerces和验证接口=)但是你可以简单地从xerce添加验证:
您可以在 adnroid 中使用 xerces 和本机模式验证(在 java 中) - 您必须下载 xerces 源并(经过一些简单的操作)将其包含到您自己的代码中 - 您将能够使用 DocumentBuilderFactory.setShema 方法。