我想驗證Android設備上XSD的XML文件。沒有解決方案來驗證在XSD Android中的XML
我GOOGLE了很多,發現了一些解決方案,如xerces-for-android。 在堆棧溢出中,我找到了一些像this這樣的頁面,建議避免javax.xml
。爲此確認並使用Xerces。
我測試了它在不同的Android APIs(17, 20,25)
,但不幸的是我沒有任何成功。
請你幫我,並建議一種替代方法。
我想驗證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
編輯回答中的回覆 –