簡體   English   中英

針對XSD驗證多個XML文件的最佳方法是什么?

[英]What is the best way to validate multiple XML files against a XSD?

我正在一個需要針對其XSD驗證許多XML文件的項目,我遇到的麻煩是,許多XSD文件都依賴於其他XSD ,這使得通常的驗證有點麻煩,是否有一種優雅的解決方法這個問題?

如果可能的話,我希望使用內存中的那些文件,這些文件的目錄結構不符合其導入路徑。

請注意,我正在使用Java語言。

假設您使用的是JAXP,則可以在SAXParserFactory或DocumentBuilderFactory上setSchema()

我參與其中的一種解決方案是使用SchemaFactory.newSchema(Source[] schemas)將所有XSD源讀取到聚合的Schema對象中。 然后,該聚合的模式能夠驗證引用任何“頂部”模式的任何XML文檔。 所有imported架構都必須是聚合架構的一部分。 我記得,有必要按依賴關系對Source數組進行排序,這樣,如果Schema A導入了Schema B,則Schema B必須在數組中的Schema A之前發生。

另外,正如我記得的那樣, <include>在這種機制下不能很好地工作。

另一個解決方案是在ShemaFactory上設置LSResourceResolver 您將必須實現自己的LSResourceresolver ,它根據解析器的輸入來提供字節流或字符流。 我尚未親自使用或研究此解決方案。

第一個解決方案當然具有這樣的好處,即模式解析和處理可以一次完成,並可以重復用於隨后的所有驗證。 第二種選擇可能很難實現。

要記住的另一件事(取決於您的上下文):從性能和安全性角度來看,控制整個“解析”過程(即控制解析器如何訪問外部資源)是一個不錯的設計選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM