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

时间:2017-02-16 10:03:22

标签: xml validation xsd xerces xmlschemaset

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

我google了很多,找到了像xerces-for-android这样的解决方案。 在堆栈溢出中,我找到了一些类似this的页面,建议避免使用public interface IAnimal extends RealmModel { int getNumberOfLegs(); void setNumberOfLegs(int legs); boolean getHasFur(); void setHasFur(boolean hasFur); } public interface IDog extends IAnimal { String getColor(); void setColor(String color); boolean getCanDoTricks(); void setCanDoTricks(); } public interface IGermanShepherd extends IDog { boolean getIsGuardDog(); void setIsGuardDog(boolean isGuardDog); boolean getIsAtRiskOfHipDysplasia(); void setIsAtRiskOfHipDysplasia(boolean isAtRisk); } 。为此目的验证和使用Xerces。

我在不同的public class GermanShepard extends RealmObject implements IGermanShepard { private int numLegs; private boolean hasFur; private String color; private boolean canDoTricks; private boolean isGuardDog; private boolean isAtRiskofHipDysplasia; // inherited getters/setters } 测试了它,但遗憾的是我没有取得任何成功。

你能帮助我并建议一种替代方法。

1 个答案:

答案 0 :(得分:2)

1 - 转到https://code.google.com/archive/p/xerces-for-android/

2 - 点击左侧菜单中的来源&在中间页面的源代码中。

3 - 点击下载代码&提取拉链内容。

4 - 在提取的内容中导航到文件夹" xerces-for-android / trunk / src"。

5 - 复制文件夹" mf"在你的[AndroidApp | AndroidModule]" src / main / java" 。目录

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

7 - 在该文件夹中,您必须创建下一个文件夹结构:
MF /组织/阿帕奇/的Xerces / IMPL /味精
&安培;
MF /组织/阿帕奇/的xerces / IMPL /的xpath /正则表达式

8 - 使用" .properties"复制文件来自此目录中等效的extranted contents文件夹的扩展名。

使用类似

的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 ... package。

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

度过愉快的一天。