我旁邊的xml文件如何逃脫組XML特殊字符JAXB
<xml name="Places">
<data>
<row Code="1" Name="#X1.A&B(City)" />
</data>
</xml>
而且我執行解組我得到Name屬性裏面,因爲符號(&)的例外The reference to entity "B" must end with the ';' delimiter
後。
JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
File xml = new File("test2.xml");
Object obj = unmarshaller.unmarshal(xml);
我該如何逃避這些角色?
我已經嘗試添加CharacterEscapeHandler,但它不工作的Unmarshaller
private static class EscapeHandler implements CharacterEscapeHandler {
@Override
public void escape(char[] buf, int start, int len, boolean isAttValue,
Writer out) throws IOException {
...
}
}
unmarshaller.setProperty("com.sun.xml.bind.marshaller.CharacterEscapeHandler",
new EscapeHandler());
而且我越來越javax.xml.bind.PropertyException: name: com.sun.xml.bind.marshaller.CharacterEscapeHandler
可能是一個重複:http://stackoverflow.com/a/18017130/506855 雖然這是關於編組而不是反編組。 – Puce 2015-01-15 17:33:01
JAXB實現將取決於較低級別(SAX或StAX)解析器。如果您可以找到一個容忍無效XML的容器,那麼您將能夠讓JAXB使用它。 – 2015-01-15 18:23:11