我在UTF-8()里面有一个String控制二进制文件.JAXB愉快地编组包含此类字符的XML文档,但后来无法解组它:0"A\u0000B"
final JAXBContext jaxbContext = JAXBContext.newInstance(Root.class);
final Marshaller marshaller = jaxbContext.createMarshaller();
final Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
Root root = new Root();
root.value = "A\u0000B";
final ByteArrayOutputStream os = new ByteArrayOutputStream();
marshaller.marshal(root, os);
unmarshaller.unmarshal(new ByteArrayInputStream(os.toByteArray()));
Run Code Online (Sandbox Code Playgroud)
根类很简单:
@XmlRootElement
class Root { @XmlValue String value; }
Run Code Online (Sandbox Code Playgroud)
输出XML包含二进制0以及之间A和B(十六进制:41 00 42),其解组期间导致以下错误:
org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 63;
An invalid XML character (Unicode: 0x0) was found in the element content of the document.
Run Code Online (Sandbox Code Playgroud)
有趣的是,使用原始DOM API( …
我需要使用JAXB Marshaller(JAXB 2.2版)将XML java对象序列化为XML文件.现在在xml对象中,我有一个包含String值的标记,这样:
"<"tagA>
**"<"YYYYY>done"<"/YYYYY>**
"<"/tagA>
Run Code Online (Sandbox Code Playgroud)
现在您可以看到此字符串值再次包含标记.我希望在xml文件中以相同的方式编写它.
但是JAXB Marshaller会转换这些值,例如:
"&"lt;YYYYY"&"gt;"&"#xD;done ......等等
我无法使用JAXB 2.2单独处理这些转义字符.反正可能吗?
在这方面的任何帮助都会很棒..
在此先感谢Abhinav Mishra