Soh*_*rab 5 xml validation xsd xerces xmlschemaset
我正在尝试根据 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 - 将文件夹“mf”复制到 [AndroidApp|AndroidModule]“src/main/java”目录中。
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);
Run Code Online (Sandbox Code Playgroud)
不要使用 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;
Run Code Online (Sandbox Code Playgroud)
编辑回复评论。
当我寻找有关如何在 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
祝你今天过得愉快。
| 归档时间: |
|
| 查看次数: |
1636 次 |
| 最近记录: |