xsd

2011-03-18 13 views
5

के खिलाफ xml सत्यापन निष्पादित करना मेरे पास एक स्ट्रिंग और एक्सएसडी फ़ाइल के रूप में एक्सएमएल है, और मुझे एक्सएसडी के साथ एक्सएमएल को प्रमाणित करने की आवश्यकता है। मैं यह कैसे कर सकता हूँ?xsd

+0

या तो यू स्ट्रिंग की जगह में एक XML फ़ाइल की जरूरत है और की तुलना में आप XSD के साथ एक्सएमएल मान्य कर सकते हैं, वहाँ उपकरण के बहुत सारे मेरे उपयोगों के लिए, JAXB 2.x की तरह उपलब्ध Xrces आदि –

उत्तर

1

आप इस के लिए javax.xml.validation API का उपयोग कर सकते हैं:

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

ऐसा करने के लिए javax.xml.validation एपीआई का उपयोग कर सकते हैं।

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

बिल्कुल सही कर रहे हैं - धन्यवाद – thonnor

संबंधित मुद्दे