【问题标题】:How do I encode UTF-8 using the XStream framework?如何使用 XStream 框架对 UTF-8 进行编码?
【发布时间】:2010-11-15 17:54:50
【问题描述】:

根据 XStream 的常见问题解答,其默认解析器不保留 UTF-8 文档编码,并且必须提供自己的编码器。如何做到这一点?

谢谢!

【问题讨论】:

    标签: xml utf-8 encode xstream


    【解决方案1】:

    使用 UTF-8 编码创建 Writer。将 Writer 作为参数传递给 XStream 的 toXML 方法。

    XStream xstream = new xStream();
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    
    Writer writer = new OutputStreamWriter(outputStream, "UTF-8");
    
    xStream.toXML(object, writer);
    String xml = outputStream.toString("UTF-8");
    

    您也可以使用该 Writer 来包含 XML 声明。

    writer.write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
    xStream.toXML(object, writer);
    

    【讨论】:

    • +1 谢谢 - 只是偶然发现了这个并且无法在文档中轻松找到它。
    【解决方案2】:

    另一种解决方案是通过驱动程序以正确的编码启动 XStream 对象。使用 DomDriver 如下所示:

    XStream xstream = new XStream(new DomDriver("UTF-8"));
    

    (默认)PrettyPrintWriter 将由具有正确编码的输出流包装。 但是,您不能以这种方式添加 UTF-8 标头...

    【讨论】:

      【解决方案3】:

      使用当前版本的 XStream,@Jeromy 的示例将如下所示:

      ByteArrayOutputStream stream = new ByteArrayOutputStream();
      OutputStreamWriter writer = new OutputStreamWriter(stream, "UTF-8");
      HierarchicalStreamWriter xmlWriter = new PrettyPrintWriter(writer);
      xstream.marshal(object, xmlWriter);
      return new String(stream.toByteArray(), "UTF-8");
      

      【讨论】:

        猜你喜欢
        • 2018-06-23
        • 2015-10-26
        • 2015-03-23
        • 2015-06-06
        • 2011-07-02
        • 2011-08-13
        • 1970-01-01
        • 2015-07-09
        • 2018-05-11
        相关资源
        最近更新 更多