1

生成したい

<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>슠&lt;/td>
XML("&#038;nbsp;"): <td>&amp;#038;nbsp;</td>
XML("&nbsp;"): <td>&amp;nbsp;</td>
XML(" "): <td> </td>

何か案は?

IDE で文字エンコーディングが「UTF-8」に設定されています。

4

1 に答える 1

0

toXML() 使用するのではなくnu.xom.Serializer、通常は明示的な数値エンティティ参照を提供するものを使用することをお勧めします。

シリアライザは、明示的な数値エンティティ参照 ( &#160;) を提供する必要があります。本当に必要な&nbsp;場合は、Serializer をサブクラス化し、Text メソッドをオーバーライドする必要があります。

シリアライザーを使用するには、次を試してください。

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

Serializer をサブクラス化する必要がある場合は、さらに複雑になります。

于 2013-08-06T14:13:51.147 に答える