针对XSD的Java XML验证在特定情况下不会引发错误

针对XSD的Java XML验证在特定情况下不会引发错误,java,xml,validation,xsd,Java,Xml,Validation,Xsd,我一直在寻找这个问题的答案,但我还没有找到任何解决这个问题的方法 因此,我想使用JavaXML验证验证器根据XSD模式文件验证XML文件。它已经起作用了。但是,在特定情况下,验证器似乎会忽略XML文件中的错误 例如,如果在xml文件的以下位中,“strasse”标记拼写错误为“strass”,验证程序将抛出错误 但是如果我将标记“hausnummer”更改为“hausnumme”,则验证不会显示任何错误 <adresse> &l

我一直在寻找这个问题的答案,但我还没有找到任何解决这个问题的方法

因此,我想使用JavaXML验证验证器根据XSD模式文件验证XML文件。它已经起作用了。但是,在特定情况下,验证器似乎会忽略XML文件中的错误

例如,如果在xml文件的以下位中,“strasse”标记拼写错误为“strass”,验证程序将抛出错误

但是如果我将标记“hausnummer”更改为“hausnumme”,则验证不会显示任何错误

            <adresse>
                <strasse>Finsterwalderstraße</strasse>
                <hausnummer>7</hausnummer>
                <hausnummerzusatz></hausnummerzusatz>
                <plz>83026999</plz>
                <ort>Rosenheim</ort>
            </adresse>
ErrorHandler的实现

@Override
public void error(SAXParseException e) throws SAXException {
    Message message = addMessage(e, MessageSeverity.ERROR);
    LOGGER.error(message.toString());
}
警告和致命错误也是如此

以及验证方法本身

public List<Message> validate() throws IOException {
    try {
        validator.validate(jaxbSource);
    }
    catch (SAXException ex) {
        ...
    }
    return Collections.unmodifiableList(validationMessages);
}
public List validate()引发IOException{
试一试{
validator.validate(jaxbSource);
}
捕获(SAXEx异常){
...
}
返回集合。不可修改列表(validationMessages);
}
如果在解组时使用解组器的setSchema()方法验证XML,则会出现错误。但我不想使用解组器进行验证

有没有人也遇到过这个问题,或者有没有办法告诉验证器在验证时要更加严格

编辑:整个XSD有点太大,无法在这里发布,所以我只发布与上述示例相关的部分

标题:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ka="http://www.g-fit.de/ngs/kundenauftrag" xmlns:jxb="http://java.sun.com/xml/ns/jaxb" xmlns:voi="http://www.g-fit.de/ngs/kundenauftrag/voice" xmlns:ip="http://www.g-fit.de/ngs/kundenauftrag/ip_nga" targetNamespace="http://www.g-fit.de/ngs/kundenauftrag" elementFormDefault="qualified" attributeFormDefault="unqualified" jxb:version="2.0">

ADRESE类型的定义:

<xs:complexType name="adresse">
    <xs:sequence>
        <xs:element name="strasse" type="xs:string"/>
        <xs:element name="hausnummer" type="ka:hausnummer"/>
        <xs:element name="hausnummerzusatz" type="xs:string" minOccurs="0"/>
        <xs:element name="plz" type="ka:plz"/>
        <xs:element name="ort" type="xs:string"/>
    </xs:sequence>
</xs:complexType>


Camn在没有看到您的XSD之前无法回答此问题。好的,我添加了XSD中与我发布的示例相关的部分。无法解释这一点。试着发布一个复制,这样我们就可以自己尝试了。
<xs:complexType name="adresse">
    <xs:sequence>
        <xs:element name="strasse" type="xs:string"/>
        <xs:element name="hausnummer" type="ka:hausnummer"/>
        <xs:element name="hausnummerzusatz" type="xs:string" minOccurs="0"/>
        <xs:element name="plz" type="ka:plz"/>
        <xs:element name="ort" type="xs:string"/>
    </xs:sequence>
</xs:complexType>