我正在尝试针对 Android 设备上的 XSD 验证 XML 文件。
我搜索了很多,找到了一些解决方案,例如xerces-for-android。在堆栈溢出中,我发现了一些这样的页面,建议避免javax.xml
。验证并为此目的使用 Xerces。
我在不同的地方对其进行了测试,Android APIs(17, 20,25)
但不幸的是我没有任何成功。
您能否帮助我并建议一种替代方法。
我正在尝试针对 Android 设备上的 XSD 验证 XML 文件。
我搜索了很多,找到了一些解决方案,例如xerces-for-android。在堆栈溢出中,我发现了一些这样的页面,建议避免javax.xml
。验证并为此目的使用 Xerces。
我在不同的地方对其进行了测试,Android APIs(17, 20,25)
但不幸的是我没有任何成功。
您能否帮助我并建议一种替代方法。
1 - 转到https://code.google.com/archive/p/xerces-for-android/
2 - 单击左侧菜单中的源代码和中间页面的源代码。
3 - 单击下载代码并解压缩 zip 内容。
4 - 在提取的内容中导航到文件夹“xerces-for-android/trunk/src”。
5 - 复制 [AndroidApp|AndroidModule] "src/main/java" 目录中的文件夹 "mf"。
6 - 现在您必须在“src/main”目录中创建一个名为“resources”的文件夹。这可以在 Android Studio 中完成(右键单击您的模块/应用程序 -> 新建 -> 文件夹 -> Java 资源文件夹)。
7 - 在该文件夹中,您必须创建下一个文件夹结构:
mf/org/apache/xerces/impl/msg
&
mf/org/apache/xerces/impl/xpath/regex
8 - 从此目录内的等效提取内容文件夹中复制扩展名为“.properties”的文件。
当您使用 XSD 验证 XML 文件时
SchemaFactory factory = new XMLSchemaFactory();
Source schemaFile = new StreamSource( /*Input stream to your schema*/ );
Source xmlSource = new StreamSource( /*Input stream to your xml source*/ );
Schema schema = factory.newSchema(schemaFile);
Validator validator = schema.newValidator();
validator.validate(xmlSource);
不要使用 SDK 导入并使用 mf... 包。
import mf.javax.xml.transform.Source;
import mf.javax.xml.transform.stream.StreamSource;
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;
编辑以回复评论。
当我在寻找有关如何在 Android 中使用 Xml Schema 验证 Xml 文档的信息时,我偶然发现了有关该项目的评论,尽管它只包含一个 zip 文件并且没有文档。
我寻找了一个有提交的存储库,并找到了这个https://github.com/MaTriXy/xerces-for-android,最后一次提交是在 4 年前进行的。
复制资源中的.java文件而不是.profile后,抛出异常,说找不到.profile,查找新信息,我看到.profile必须在Android Studio的资源文件夹中。
可能,这是一个假设,该项目是 Eclipse/Ant 的 jar,现在不适用于 AndroidStudio/Gradle。
您可以创建一个 .aar。在您的项目中创建一个 Android 库模块,执行相同的步骤并编译应用程序以进行发布。
在您的项目中,在目录中。
/你的项目/你的模块/构建/输出/aar/
将有一个名为 yourmodule-release.arr 的文件,您应该能够使用该包并删除该模块。
在寻找信息时,我还找到了有关 jarjar 的信息,这似乎是一个以更简单的方式进行这种改编的项目。
https://github.com/shevek/jarjar
祝你今天过得愉快。