3

などのエンコードされた形式の値を持つ受信 XML がありますが、&ltimg src=/".../" &gtこのデータをアンマーシャリングすると、JAXB は、<img src=/"../" >実行したくないデータをデコードしています。

JAXB でこの動作を無効にする構成はありますか?

4

2 に答える 2

1

注釈などを使用して、変数値を CDATA として定義します

于 2012-11-05T14:39:01.730 に答える
0

StAX パーサーでを使用するIS_REPLACING_ENTITY_REFERENCESと、探している動作が得られるはずです。

package forum13235119;

import javax.xml.bind.*;
import javax.xml.stream.*;
import javax.xml.transform.stream.StreamSource;

public class Demo {

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

        XMLInputFactory xif = XMLInputFactory.newFactory();
        xif.setProperty(XMLInputFactory.IS_REPLACING_ENTITY_REFERENCES, false);
        XMLStreamReader xsr = xif.createXMLStreamReader(new StreamSource("src/forum13235119/input.xml"));

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        Foo foo = (Foo) unmarshaller.unmarshal(xsr);
        System.out.println(foo.bar);
    }

}

ノート:

これは私の環境では機能しませんが、同様の質問に対する次の回答に基づいて、一部の StAX パーサーでは機能します。

于 2012-11-05T16:31:16.420 に答える