如何将内容放入xom的内容中

时间:2013-07-26 12:02:35

标签: java character-encoding xom

我想生成

<td>&nbsp;</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 = "&#038;nbsp;";
  test(nbsp);
  test(nbsp2);
  test(nbsp3);
  test("&nbsp;");
  final byte[] b = nbsp.getBytes("UTF-8");
  test(new String(b, "UTF-8"));
}

我得到了

XML(" "): <td> </td>
XML("슠"): <td>슠</td>
XML("&#038;nbsp;"): <td>&amp;#038;nbsp;</td>
XML("&nbsp;"): <td>&amp;nbsp;</td>
XML(" "): <td> </td>

任何想法?

我的IDE中字符编码设置为“UTF-8”。

1 个答案:

答案 0 :(得分:0)

我建议您不要使用toXML(),而是使用通常会提供明确的数字实体引用的nu.xom.Serializer

Serializer应该提供明确的数字实体引用(&#160;)。如果你真的需要&nbsp;,你可能需要继承Serializer并覆盖Text方法。

要使用Serializer,请尝试:

    OutputStream out = new FileOutputStream(file);
    Serializer ser = new Serializer(out);
    ser.write(doc);
    out.close();

如果你必须继承Serializer它会变得更加棘手。