2013-04-26 16 views
5

Xerces-J kullanarak bir XML belgesini doğrulamaya çalışıyorum.Bir XML Belgesini doğrulamak için Xerces-j'yi kullanma

Doğrulayıcıyı herhangi bir ilişkili XSD veya DTD dosyalarını almayı ve çözmeyi istiyorum (şemalama, adsızsocalocation ve DOCTYPE referansları kullanarak). Görünüşe göre bu kaynakların yüklenmesi bir Resolver sınıfına verilebilir.

Ancak, gördüğüm tüm örnekler şemadan bir doğrulayıcı oluşturmaya başlıyor.

Bunu başka şekilde sürdürebilir, xerces'e XML belgesini doğrulamasını isteyin ve ne gerekiyorsa yüklediğinden emin olun, ya da ilk önce şema referanslarını arayan XML dosyasını ayrıştırmalıyım, sonra bunları yükleyin. şemalardan validator? İdeal bir dünyada

doğrulayıcı da Sen <! DOCTYPE bildirimleri veya şema nitelikleri ararken kullanılacak bir EntityResolver bir ayrıştırıcı sağlamak XSD 1.1

cevap

3

destekleyecektir. En yaygın varlık çözümleyicisi, temel olarak XML dosyalarının veya kamu kimlikleri, sistem kimlikleri ve URI'lerin sözlüğünü fiziksel dosyalara tanımlayan metin dosyaları olan katalog dosyalarını kullanır. org.apache.xml.resolver paketine bakın. Ancak kendi EntityResolver uygulamanızı da sağlayabilirsiniz.

CatalogResolver resolver = new CatalogResolver(); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
dbf.setValidating(true); 
dbf.setFeature("http://apache.org/xml/features/validation/dynamic", true); 
DocumentBuilder parser = dbf.newDocumentBuilder(); 
parser.setEntityResolver(resolver); 
Document doc = parser.parse(someFile); 
İlgili konular