使用XML验证XSD

时间:2010-06-11 10:27:09

标签: java xml xsd

我想知道如何使用XSD验证XML。 XML不是元素类型,而是复杂类型。由于验证器类的验证方法仅比较元素类型。

所以基本上我想用XML来证明XSD的复杂类型。

e.g。

以下基本XSD

xs:element name="Customer">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Dob" type="xs:date" />
      <xs:element name="Address">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Line1" type="xs:string" />
            <xs:element name="Line2" type="xs:string" />
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>

我们可以假设Customer元素中有多个复杂类型。

MY XML

<Address> 
    <Line1>34 thingy street, someplace</Line1> 
    <Line2>sometown, w1w8uu </Line2>
</Address>

我如何使用XSD验证我的XML。 请在java中发布您的建议

1 个答案:

答案 0 :(得分:1)

这样的东西
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;

//  .....


    try {
        File xmlFile // read XML file

        File xsdFile // read XSD file

        Schema schema = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(xsdFile);
        Validator validator = schema.newValidator();
        validator.validate(new StreamSource(xmlFile));
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SAXException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }