2013-03-31 2 views
0

Я пытаюсь проверить XML-файл, который сгенерирован w.r.t, в формате xsd. Уверенность в том, что мне нужно передать URL-адрес схемы или расположение схемы в моей системе? Аналогично, нужно ли передавать содержимое xml-файла или его местоположения?Проверка xml w.r.t XSD в java

Ниже приведен фрагмент код, я использую -

public void validateDTFAgainstXSD() 
{ 
    String inputxml = "C:/Users/file.xml"; 
    String schemaLocation = "https://github.abcd/schema.xsd"; 
    try 
    { 
     SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
     File schemaFile = new File(schemaLocation); 
     Schema schema = factory.newSchema(schemaFile); 
     javax.xml.validation.Validator validator = schema.newValidator(); 

     Source source = new StreamSource(new StringReader(inputxml)); 
     validator.validate(source); 
     System.out.println("File validated"); 
    } 
    catch(Exception ex) 
    { 
     System.out.println("File not validated"); 
    }  
} 
+0

Я сделал много исследований для моего вышеупомянутого вопроса. И среди многих вопросов, связанных с этим на сайте, этот ответ отвечает на него BEST - http://stackoverflow.com/a/16054/1472493 – R11G

ответ

1

Есть newSchema() перегрузки, которые принимают либо объект файла или объект источника. Вы передаете файл, и все в порядке.

Метод Validator.validate() требует наличия источника. Если у вас есть имя файла, вы можете создать источник, используя новый StreamSource (новый файл (имя файла)). То, как вы это делаете, неверно: предполагается, что строка, которую вы обертываете в StringReader, содержит XML, который должен быть проверен, а не имя файла, содержащего XML.

+0

Получение этой ошибки - org.apache.xerces.jaxp.validation.ValidatorImpl не может быть отлит в javax.xml.bind.Validator Для этой строки: \t \t \t Validator validator = (Validator) schema.newValidator(); – R11G

+0

Это простой случай импорта класса Validator из неправильного пакета. Базовая ошибка Java. –

Смежные вопросы