相关疑难解决方法(0)

成功编组后无法取消编组\ u0000

我在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以及之间AB(十六进制: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( …

java xml unicode jaxb

9
推荐指数
1
解决办法
1605
查看次数

使用JAXB Marshaller处理XML转义字符(例如引号)

我需要使用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

java escaping character jaxb marshalling

8
推荐指数
2
解决办法
5万
查看次数

标签 统计

java ×2

jaxb ×2

character ×1

escaping ×1

marshalling ×1

unicode ×1

xml ×1