2

私たちのアプリケーションは、着信 xml で CDATA セクションに遭遇するまで正常に動作していました。私はxmlのCDATAが非常に一般的なケースであることを知っています。私たちはそれをどのように忘れていましたか。次の方法でJAXBマッピングを使用しています

@XmlRootElement(name="MyRoot")
@XmlAccessorType(XmlAccessType.FIELD)
public class MyRoot {

    @XmlElement(name="One")
    private String one;

    @XmlElement(name="Three")
    private String three;

    @XmlAnyElement
    private List<Object> remaining = new ArrayList<Object>();

    public MyRoot() {
    }
}

別のアプリケーションから次の xml を受け取りました。JAXB が /MyRoot/Two/bla2/one の CDATA を無視する理由が本当にわかりませんでした。変換後、次のような出力が表示されます<Two><bla><bla> <bla2><one> function matchwo(a,b) { if (a < b && a < 0) then { return 1;} else { return 0;}} </one></bla2> <Two>(CDATA がないことに注意してください)

ここにXMLがあります

<MyRoot>
<One></One>
<Two>
    <bla></bla>
    <bla2><one><![CDATA[  function matchwo(a,b) { if (a < b && a < 0) then { return 1;} else { return 0;}} ]]></one></bla2>
</Two>
<Three></Three>
<Four>some text</Four>

問題を理解するのを手伝ってください。CDATA で不足しているものはありますか? 前もって感謝します。

4

0 に答える 0