3

我有一个传入的 XML,其值是编码形式,例如&ltimg src=/".../" &gt,但是在解组此数据时,JAXB 正在解码<img src=/"../" >我不希望它执行的数据。

是否有任何配置可以在 JAXB 中禁用此行为?

4

2 回答 2

1

通过使用注释或其他方式将变量值定义为 CDATA

于 2012-11-05T14:39:01.730 回答
0

IS_REPLACING_ENTITY_REFERENCES与 StAX 解析器一起使用应该会给您正在寻找的行为,

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 回答