Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用模式问题进行XSD验证_Java_Xml_Jaxb_Unmarshalling_Xsd Validation - Fatal编程技术网

Java 使用模式问题进行XSD验证

Java 使用模式问题进行XSD验证,java,xml,jaxb,unmarshalling,xsd-validation,Java,Xml,Jaxb,Unmarshalling,Xsd Validation,我有一个xml文件,比如 <root> <requestId>1</requestId> <subRequest> <id>11</id> <date>18-02-2015</date> </subRequest> <subRequest> <id>12</id> <date>19-02-201

我有一个xml文件,比如

<root>
  <requestId>1</requestId>
  <subRequest>
    <id>11</id>
    <date>18-02-2015</date>
  </subRequest>
  <subRequest>
    <id>12</id>
    <date>19-02-2015</date>
  </subRequest>
  .
  .
</root>

1.
11
18-02-2015
12
19-02-2015
.
.
我有一个XSD文件,我不能更改,该文件中的日期必须采用某种格式。“subRequest”标签可以有1000个条目。我创建了一个模式验证来检查格式

所以我的问题是,在这1000个条目中,如果只有两个条目的日期格式不正确,我怎么知道这两个条目的id呢


当我使用JAXB(解组器)将xml转换为bean时,我正在检查这一点。我使用了模式验证和validator.getLocalizedMessage()为对象和节点都提供null。我只能看到有关问题格式的行号和一般消息。

您可以执行以下操作:

解组器。侦听器

您可以创建一个
解组器.Listener
来跟踪正在解组的当前
子请求

import javax.xml.bind.Unmarshaller;

public class SubRequestListener extends Unmarshaller.Listener {

    private SubRequest subRequest;

    @Override
    public void beforeUnmarshal(Object target, Object parent) {
        if(target.getClass() == SubRequest.class) {
            subRequest = (SubRequest) target;
        } else {
            subRequest = null;
        }
    }

    public SubRequest getSubRequest() {
        return subRequest;
    }

}
XmlAdapter

然后实现一个
XmlAdapter
来验证
Date
属性的内容。在本例中,我假设您将其存储为
字符串
。如果要将其存储为其他内容(即
Date
),请将
XmlAdapter
更改为
XmlAdapter
。此
XmlAdapter
引用
Unmarshaller.Listener
以获取
子请求的实例

import java.text.SimpleDateFormat;
import javax.xml.bind.annotation.adapters.XmlAdapter;

public class DateValidator extends XmlAdapter<String, String> {

    private SubRequestListener subRequestListener;

    public DateValidator() {
        this.subRequestListener = new SubRequestListener();
    }

    public DateValidator(SubRequestListener subRequestListener) {
        this.subRequestListener = subRequestListener;
    }

    @Override
    public String marshal(String value) throws Exception {
        return value;
    }

    @Override
    public String unmarshal(String value) throws Exception {
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        try {
            sdf.applyPattern(value);
        } catch(IllegalArgumentException e) {
            SubRequest subRequest = subRequestListener.getSubRequest();
            System.out.println(subRequest.getId());
        }
        return value;
    }

}
演示

import java.io.File;
import javax.xml.XMLConstants;
import javax.xml.bind.*;
import javax.xml.validation.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Root.class);
        Unmarshaller unmarshaller = jc.createUnmarshaller();

        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
        Schema schema = sf.newSchema(new File("src/forum28584265/schema.xsd")); 
        unmarshaller.setSchema(schema);

        SubRequestValidator subRequestValidator = new SubRequestValidator();
        unmarshaller.setListener(subRequestValidator);
        unmarshaller.setEventHandler(subRequestValidator);

        File xml = new File("src/forum28584265/input.xml");
        Root root = (Root) unmarshaller.unmarshal(xml);
    }

}
下面是一些关于如何设置的演示代码

import java.io.File;
import javax.xml.bind.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Root.class);

        Unmarshaller unmarshaller = jc.createUnmarshaller();

        SubRequestListener unmarshallerListener = new SubRequestListener();
        unmarshaller.setListener(unmarshallerListener);

        DateValidator dateAdapter = new DateValidator(unmarshallerListener);
        unmarshaller.setAdapter(dateAdapter);

        File xml = new File("input.xml");
        Root root = (Root) unmarshaller.unmarshal(xml);

        Marshaller marshaller = jc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
        marshaller.marshal(root,  System.out);
    }

}

我知道您正在寻找基于JAXB的解决方案。 但是,如果您只想找到特定的错误,还可以使用简单的
SAXParser
快速跟踪它。也许它可以帮助您首先找到导致错误的原因

编辑

我在
DefaultHandler
中添加了一个字段,允许您获取引发错误的子请求id。 正如我所说,这应该有助于追踪错误,它不会赢得美貌奖

import java.io.File;
import java.io.IOException;

import javax.xml.XMLConstants;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;

import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.Attributes;

public class RequestParser {

    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {

        Schema schema = null;

        try {
            String language = XMLConstants.W3C_XML_SCHEMA_NS_URI;
            SchemaFactory factory = SchemaFactory.newInstance(language);
            schema = factory.newSchema(new File("YOUR_SCHEMA.xsd"));
        } catch (Exception e) {
            e.printStackTrace();
        }

        SAXParserFactory spf = SAXParserFactory.newInstance();
        spf.setSchema(schema);

        SAXParser parser = spf.newSAXParser();

        parser.parse(new File("YOUR_DOCUMENT.xml"), new DefaultHandler(){

            String currentNodeQName = "";
            String currentSubrequestId = "";

            public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
                currentNodeQName = qName;
            }

            public void characters(char[] ch, int start, int length) throws SAXException {
                if (currentNodeQName.equals("id")) {
                    currentSubrequestId = new String(ch, start, length);
                }
            }

            public void warning(SAXParseException e) throws SAXException {
                System.out.println("Warning in subrequest with id " + currentSubrequestId);
                e.printStackTrace();
            }

            public void error(SAXParseException e) throws SAXException {
                System.out.println("Error in subrequest with id: " + currentSubrequestId);
                e.printStackTrace();
            }

            public void fatalError(SAXParseException e) throws SAXException {
                System.out.println("Fatal error in subrequest with id " + currentSubrequestId);
                e.printStackTrace();
            }
        });
    }
}
您还可以在这三个异常块上设置断点,这将为您提供有关当前错误的更多信息

编辑2

样本输出:

Error in subrequest with id 12
org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: '19-02-2015' is not a valid value for 'date'.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:423)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3188)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidType(XMLSchemaValidator.java:3103)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processElementContent(XMLSchemaValidator.java:3013)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleEndElement(XMLSchemaValidator.java:2156)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:824)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1789)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2950)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:513)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:815)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:744)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:128)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:543)
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
    at javax.xml.parsers.SAXParser.parse(SAXParser.java:331)
    at so28836220.RequestParser.main(RequestParser.java:43)

您可以执行以下操作:

dismarshaller.Listener和ValidationEventHandler 您可以为此用例创建组合
解组器.Listener
验证venthandler

import javax.xml.bind.*;

public class SubRequestValidator extends Unmarshaller.Listener implements ValidationEventHandler {

    private SubRequest subRequest;

    @Override
    public void beforeUnmarshal(Object target, Object parent) {
        if(target.getClass() == SubRequest.class) {
            subRequest = (SubRequest) target;
        } else {
            subRequest = null;
        }
    }

    public SubRequest getSubRequest() {
        return subRequest;
    }

    @Override
    public boolean handleEvent(ValidationEvent validationEvent) {
        if(subRequest != null) {
            System.out.println(subRequest.getId());
            System.out.println(validationEvent.getMessage());
        }
        return validationEvent.getSeverity() != ValidationEvent.FATAL_ERROR;
    }

}
然后在
解组器
上,除了
模式
的实例之外,还可以设置这两个属性

    SubRequestValidator subRequestValidator = new SubRequestValidator();
    unmarshaller.setListener(subRequestValidator);
    unmarshaller.setEventHandler(subRequestValidator);
演示代码 以下是完成该示例的一些支持材料:

XMLSchema(Schema.xsd)

演示

import java.io.File;
import javax.xml.XMLConstants;
import javax.xml.bind.*;
import javax.xml.validation.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Root.class);
        Unmarshaller unmarshaller = jc.createUnmarshaller();

        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
        Schema schema = sf.newSchema(new File("src/forum28584265/schema.xsd")); 
        unmarshaller.setSchema(schema);

        SubRequestValidator subRequestValidator = new SubRequestValidator();
        unmarshaller.setListener(subRequestValidator);
        unmarshaller.setEventHandler(subRequestValidator);

        File xml = new File("src/forum28584265/input.xml");
        Root root = (Root) unmarshaller.unmarshal(xml);
    }

}
输出

import java.util.*;
import javax.xml.bind.annotation.*;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {

    private int requestId;

    @XmlElement(name="subRequest")
    private List<SubRequest> subRequests;

}
import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
public class SubRequest {

    private int id;
    private String date;

    public int getId() {
        return id;
    }

}
12
cvc-datatype-valid.1.2.1: 'WRONG' is not a valid value for 'date'.
Exception in thread "main" javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: 'WRONG' is not a valid value for 'date'.]
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:514)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:215)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:142)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:151)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:169)
    at forum28584265.Demo.main(Demo.java:23)
Caused by: org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: 'WRONG' is not a valid value for 'date'.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:423)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3188)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidType(XMLSchemaValidator.java:3103)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processElementContent(XMLSchemaValidator.java:3013)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleEndElement(XMLSchemaValidator.java:2156)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:824)
    at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.endElement(ValidatorHandlerImpl.java:566)
    at com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.endElement(ValidatingUnmarshaller.java:101)
    at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.endElement(SAXConnector.java:156)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:604)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1789)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2950)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:513)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:815)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:744)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:128)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:543)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)
    ... 6 more

在解组器之前可以分割xml吗?实际上xml非常大,每个“subRequest”标记也有100个不同类型的字段(我只放了两个字段“id”和“date”)。所以分割xml不是一个好主意。就像我说的,有1000个条目。如果你得到了行,你可以移动到该行并获得id,在验证后移动到该行,然后返回到以前的id。你能不能也向我们提供XSD文件?对不起,我不能提供你。我也不能编辑XSD文件。很抱歉。您的答案缺少的部分是如何获取“日期”格式无效的“子请求”的“id”。@BlaiseDoughan:您说得对,谢谢您指出这一点。我编辑了答案。如前所述,我相信在解组期间检查错误时,您的代码做的是正确的,而且显然更好。不过,我希望我的回答能让OP追踪到手头的具体错误。布莱斯问题是我没有可能出错的日期字段。至少还有30个字段需要使用xsd验证进行检查。@VikastejavaDeveloper-我添加了另一个可能对您更合适的答案:
import java.io.File;
import javax.xml.XMLConstants;
import javax.xml.bind.*;
import javax.xml.validation.*;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Root.class);
        Unmarshaller unmarshaller = jc.createUnmarshaller();

        SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
        Schema schema = sf.newSchema(new File("src/forum28584265/schema.xsd")); 
        unmarshaller.setSchema(schema);

        SubRequestValidator subRequestValidator = new SubRequestValidator();
        unmarshaller.setListener(subRequestValidator);
        unmarshaller.setEventHandler(subRequestValidator);

        File xml = new File("src/forum28584265/input.xml");
        Root root = (Root) unmarshaller.unmarshal(xml);
    }

}
12
cvc-datatype-valid.1.2.1: 'WRONG' is not a valid value for 'date'.
Exception in thread "main" javax.xml.bind.UnmarshalException
 - with linked exception:
[org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: 'WRONG' is not a valid value for 'date'.]
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.createUnmarshalException(UnmarshallerImpl.java:514)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:215)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:184)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:137)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:142)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:151)
    at javax.xml.bind.helpers.AbstractUnmarshallerImpl.unmarshal(AbstractUnmarshallerImpl.java:169)
    at forum28584265.Demo.main(Demo.java:23)
Caused by: org.xml.sax.SAXParseException: cvc-datatype-valid.1.2.1: 'WRONG' is not a valid value for 'date'.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(XMLSchemaValidator.java:423)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.reportSchemaError(XMLSchemaValidator.java:3188)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.elementLocallyValidType(XMLSchemaValidator.java:3103)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.processElementContent(XMLSchemaValidator.java:3013)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleEndElement(XMLSchemaValidator.java:2156)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.endElement(XMLSchemaValidator.java:824)
    at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.endElement(ValidatorHandlerImpl.java:566)
    at com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.endElement(ValidatingUnmarshaller.java:101)
    at com.sun.xml.bind.v2.runtime.unmarshaller.SAXConnector.endElement(SAXConnector.java:156)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:604)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1789)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2950)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:647)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:513)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:815)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:744)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:128)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1208)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:543)
    at com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:211)
    ... 6 more