我想生成
<td> </td>
使用xom
。
这些都不起作用:
private static void test(String s) {
Element e = new Element("td");
e.appendChild(s);
System.out.println("XML(\"" + s + "\"): " + e.toXML());
}
private static void test() throws UnsupportedEncodingException {
final String nbsp = "\u00A0";
final String nbsp2 = "\uC2A0";
final String nbsp3 = "&nbsp;";
test(nbsp);
test(nbsp2);
test(nbsp3);
test(" ");
final byte[] b = nbsp.getBytes("UTF-8");
test(new String(b, "UTF-8"));
}
我得到了
XML(" "): <td> </td>
XML("슠"): <td>슠</td>
XML("&nbsp;"): <td>&#038;nbsp;</td>
XML(" "): <td>&nbsp;</td>
XML(" "): <td> </td>
任何想法?
我的IDE中字符编码设置为“UTF-8”。
答案 0 :(得分:0)
我建议您不要使用toXML()
,而是使用通常会提供明确的数字实体引用的nu.xom.Serializer
。
Serializer应该提供明确的数字实体引用( 
)。如果你真的需要
,你可能需要继承Serializer并覆盖Text方法。
要使用Serializer,请尝试:
OutputStream out = new FileOutputStream(file);
Serializer ser = new Serializer(out);
ser.write(doc);
out.close();
如果你必须继承Serializer它会变得更加棘手。