如何在JAXB中的ValidationEventHandler中获取属性值

时间:2017-02-16 06:20:48

标签: java xml xsd jaxb

我正在尝试使用JAXB解组xml文件。在开始解析之前,首先它将验证xml文件。

我正在使用自定义验证EventHandler捕获事件并在 errors.xml 文件中打印错误列表。

我正在尝试在errors.xml文件中打印属性值以及错误消息。我能够在事件中收到错误消息,但我无法在事件中获取属性值。

如何获取特定事件的属性值?

任何人都可以帮我解决这个问题...

My code:

    JAXBContext jaxbContext = JAXBContext.newInstance("com.piyush");
    SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = factory.newSchema(new StreamSource(new File("D:/liferay-develop/workspace/cat_test/v1/STD_MP.xsd")));
    Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
    jaxbUnmarshaller.setSchema(schema);
    ValidationEventCollector validationCollector= new ValidationEventCollector();
    jaxbUnmarshaller.setEventHandler( validationCollector );
    STDMP ts = (STDMP)jaxbUnmarshaller.unmarshal(xml_gkuzu);
    if(validationCollector.hasEvents())
    {
        for(ValidationEvent event:validationCollector.getEvents())
        {
            String msg = event.getMessage();
            System.out.println(msg);
        }

0 个答案:

没有答案