【问题标题】:Validate XSD with XML使用 XML 验证 XSD
【发布时间】:2010-06-11 10:27:09
【问题描述】:

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

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

例如

下面的基本 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 元素中有多个复杂类型。

我的 XML 是

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

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

【问题讨论】:

  • “请用 java 发表你的建议”是一种很好的表达“给我代码”的方式,但本质上还是一样的。请下次发布您自己的代码以及您遇到的问题的说明,以便人们看到您不只是懒惰。
  • 嗨,Tomalak,这与懒惰无关。有些功能以一种语言提供,而在其他语言中不可用。可以用其他语言给出一个解决方案,这在 java 中可能是不可能的。
  • 你尝试了什么,你得到了什么错误? Validator.validate() 确实根据模式验证 xml,那么您还需要什么?

标签: java xml xsd


【解决方案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();
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 2011-10-23
    • 2012-04-13
    • 1970-01-01
    相关资源
    最近更新 更多