没有针对 Android 中的 XSD 验证 XML 的解决方案

No solution to validate XML against XSD in Android

我正在尝试在 Android 台设备上针对 XSD 验证 XML 文件。

我在谷歌上搜索了很多,找到了像 xerces-for-android 这样的解决方案。 在 Stack overflow 中,我发现了一些像 this 这样的页面,建议避免 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 - 将文件夹 "mf" 复制到 [AndroidApp|AndroidModule] "src/main/java" 目录中。

6 - 现在您必须在 "src/main" 目录中创建一个名为 "resources" 的文件夹。这可以在 Android Studio 中完成(右键单击您的 Module/App -> 新建 -> 文件夹 -> Java 资源文件夹)。

7 - 在该文件夹中,您必须创建下一个文件夹结构:
mf/org/apache/xerces/impl/msg
&
mf/org/apache/xerces/impl/xpath/regex

8 - 从此目录中的等效 extranted 内容文件夹中复制扩展名为“.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 架构验证 Xml 文档的信息时,我偶然发现了关于这个项目的评论,尽管它只包含一个 zip 而没有文档。

我查找了一个有提交的存储库,并找到了这个 https://github.com/MaTriXy/xerces-for-android 最后一次提交是 4 年前的地方。

复制资源中的.java文件后没有复制.profile,抛出异常,说找不到.profile,查找新资料,我看到.profile必须在 Android Studio 的资源文件夹中。

可能,这是一个假设,该项目是 Eclipse/Ant 的 jar,现在不适用于 AndroidStudio/Gradle。

您可以创建 .aar。在您的项目中创建一个 Android 库模块,执行相同的步骤并编译应用程序以供发布。

在您的项目中,在目录中。

/Yourproject/yourmodule/build/outputs/aar/

将有一个名为 yourmodule-release.arr 的文件,您应该可以使用该包并删除该模块。

查找资料我还找到了关于jarjar的资料,这似乎是一个以更简单的方式进行此改编的项目。

https://github.com/shevek/jarjar

祝你有愉快的一天。