0

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>

XML で動作し、適合性をテストする必要がある Java コード:

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);

しかし、例外はありません。なにが問題ですか?

4

1 に答える 1

3

custom を使用していることがわかりますProductsSaxHandler

ErrorHandlerコードを提供していませんが、インターフェイスの通知メソッドのいずれかが呼び出されたときに例外をスローしない可能性があります。

errorfatalErrorおよびwarningメソッドをオーバーライドProductSaxHandlerして、例外をスローするようにしてください。

于 2012-06-26T22:16:47.723 に答える