11

JAXB の予期しない要素の状況を無視して、他の種類の javax.xml.bind.UnmarshalException を取得するにはどうすればよいですか?

obj = unmler.unmarshal(new StringReader(xml))

xml 解析の obj 結果を取得したいことに注意してください。

4

3 に答える 3

13

ソリューション。

JAXBでは、次のようにValidationEventHandlerを実装します。

class CustomValidationEventHandler implements ValidationEventHandler{

    public boolean handleEvent(ValidationEvent evt) {
        System.out.println("Event Info: "+evt);
        if(evt.getMessage().contains("Unexpected element"))
            return true;
        return false;
    }

}

それで

Unmarshaller u = ...;

u.setEventHandler(new CustomValidationEventHandler());

u.unmarshal(new StringReader(xml));
于 2008-12-12T11:45:41.017 に答える
4

また、JAXB 2.0 は認識されない要素を自動的に無視し、アンマーシャリング プロセスを続行します。https://jaxb.java.net/nonav/jaxb20-fcs/docs/api/javax/xml/bind/Unmarshaller.htmlを参照して、「検証と整形式」にジャンプしてください。

于 2013-06-28T16:44:12.100 に答える
0

JAXB.unmarshal()デフォルトで予期しない要素を無視するものを使用します。スキーマの検証もスキップするため、注意してください。

JavaDoc: https://docs.oracle.com/javase/8/docs/api/javax/xml/bind/JAXB.html

于 2021-03-24T10:13:42.833 に答える