2017-02-16 95 views
3

我想验证Android设备上XSD的XML文件。没有解决方案来验证在XSD Android中的XML

我GOOGLE了很多,发现了一些解决方案,如xerces-for-android。 在堆栈溢出中,我找到了一些像this这样的页面,建议避免javax.xml。为此确认并使用Xerces。

我测试了它在不同的Android APIs(17, 20,25),但不幸的是我没有任何成功。

请你帮我,并建议一种替代方法。

回答

1

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

有一个愉快的一天。

+0

非常感谢你的完美答案。是否有任何解决方案在Lib中使用jar文件而不是复制文件夹? – Sohrab

+0

编辑回答中的回复 –