2017-02-16 71 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

編輯回答中的回覆 –