没有解决方案来验证在XSD Android中的XML
我想验证Android设备上XSD的XML文件。没有解决方案来验证在XSD Android中的XML
我GOOGLE了很多,发现了一些解决方案,如xerces-for-android。 在堆栈溢出中,我找到了一些像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 - 在你的[AndroidApp | AndroidModule]“src/main/java”目录中复制文件夹“mf”。
6 - 现在您必须在“src/main”目录下创建一个名为“resources”的文件夹。这可以在Android Studio中完成(右键单击您的模块/应用程序 - >新建 - >文件夹 - > Java资源文件夹)。
7 - 这个文件夹里,你必须创建一个文件夹结构:
MF /组织/阿帕奇/的Xerces/IMPL /味精
&
MF /组织/阿帕奇/的Xerces/IMPL/XPath的/正则表达式
8 - 从这些目录中的等效extranted内容文件夹中复制“.properties”扩展名的文件。
当您验证XML文件与XSD有类似的东西
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库模块,执行相同的步骤并编译发布的应用程序。
在您的项目中,在目录中。
/Yourproject/yourmodule /编译/输出/ AAR/
将有一个名为yourmodule-release.arr,你应该能够使用该包,并删除模块。
寻找信息我也找到了关于jarjar的信息,这似乎是一个项目,以更简单的方式进行这种改编。
https://github.com/shevek/jarjar
有一个愉快的一天。
非常感谢你的完美答案。是否有任何解决方案在Lib中使用jar文件而不是复制文件夹? – Sohrab
编辑回答中的回复 –