2011-03-18 30 views
5

Dosya olarak XML ve bir XSD dosyası var ve XML'i XSD ile doğrulamam gerekiyor. Bunu nasıl yapabilirim?xsd yerine xml doğrulaması gerçekleştiriliyor

+0

Ya u dizesinin yerine bir XML dosyası ihtiyaç ve XSD ile XML doğrulamak yerine, araçlar çok sayıda benim kullanımlar için vb –

cevap

1

Bunun için javax.xml.validation API'leri kullanabilirsiniz:

String xml = "<root/>"; // XML as String 
File xsd = new File("schema.xsd"); // XSD as File 

SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
Schema schema = sf.newSchema(xsd); 

SAXParserFactory spf = SAXParserFactory.newInstance(); 
spf.setSchema(schema); 
SAXParser sp = spf.newSAXParser(); 
XMLReader xr = sp.getXMLReader(); 
xr.parse(new InputSource(new StringReader(xml))); 
9

Bunu yapmak için javax.xml.validation API kullanabilirsiniz.

public boolean validate(String inputXml, String schemaLocation) 
    throws SAXException, IOException { 
    // build the schema 
    SchemaFactory factory = SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema"); 
    File schemaFile = new File(schemaLocation); 
    Schema schema = factory.newSchema(schemaFile); 
    Validator validator = schema.newValidator(); 

    // create a source from a string 
    Source source = new StreamSource(new StringReader(inputXml)); 

    // check input 
    boolean isValid = true; 
    try { 

    validator.validate(source); 
    } 
    catch (SAXException e) { 

    System.err.println("Not valid"); 
    isValid = false; 
    } 

    return isValid; 
} 
+0

Mükemmel Xrces JAXB 2.x gibi mevcut vardır - teşekkür ederim – thonnor