2012-06-26 1 views
0

Вот XML Schema:Почему я не получаю исключение, когда недействительный XML проверяется с помощью схемы?

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xs:element name="products"> 
    <xs:complexType> 
     <xs:sequence minOccurs="0" maxOccurs="unbounded"> 
     <xs:element name="product" type="ProductType"/> 
     </xs:sequence> 
    </xs:complexType> 
    </xs:element> 

    <xs:complexType name="ProductType"> 
    <xs:sequence> 
     <xs:element name="id" type="xs:long" /> 
     <xs:element name="name" type="xs:string" /> 
     <xs:element name="price" type="xs:decimal" /> 
    </xs:sequence> 
    </xs:complexType> 

</xs:schema> 

XML-файл, который проверяется на соответствие:

<?xml version="1.0" ?> 
<products> 
    <product> 
    <invalid_tag>32342</invalid_tag> 
    <name>Some name</name> 
    <price>3.89</price> 
    </product> 
</products> 

Java код, который работает с XML и должны проверить на соответствие:

SAXParserFactory factory = SAXParserFactory.newInstance(); 
factory.setValidating(false); 
SchemaFactory schemaFactory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
factory.setSchema(schemaFactory.newSchema(new File(xmlSchema))); 
parser = factory.newSAXParser(); 
ProductsSaxHandler handler = new ProductsSaxHandler(); 
parser.parse(new File(xmlFile), handler); 

Но я не Не получается. Что не так?

ответ

3

Я вижу, что вы используете пользовательские ProductsSaxHandler.

Вы не указали код для него, но, скорее всего, он не генерирует исключение, когда вызывается один из методов уведомления ErrorHandler.

Не забудьте переустановить исключение error, fatalError и warning методов ProductSaxHandler.

+0

Я не реализовал эти методы в обработчике. –