本项目是一个webseriice的客户端项目

Action 类:

SearchHotelRQ reqobj = XmlObjUtil.xml2Obj(reqstr, SearchHotelRQ.class);
            SearchHotelRS searchHotelRS = port.searchHotel(reqobj);
            resxml = XmlObjUtil.objToXmlString(searchHotelRS);
            return resxml;

对象转为xml的方法:objToXmlString

public static <T> String objToXmlString(T obj) throws JAXBException {
        JAXBContext jc = JAXBContext.newInstance(obj.getClass());
        Marshaller m = jc.createMarshaller();
        m.setProperty("jaxb.formatted.output", true);
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        Result result = new StreamResult(out);
        m.marshal(obj, result);
        //转码
        byte[] bystr = out.toByteArray();
        String str = "";
        try {
             str = new String(bystr,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        StringBuffer sb = new StringBuffer(str.replace("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>", ""));
        //log.error("JAXB transform object to string without version: "+ sb.toString());
        return sb.toString();
    }

第一种转码方式(在网上找的):  m.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");但在我这个项目中不起作用,不知为什么

第二种:上面方法中转码那一步,如果不转码,直接这么写的话,StringBuffer sb = new StringBuffer(new String(out.toByteArray()).replace("<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>", ""));取到的中文是乱码

相关文章:

  • 2021-11-28
  • 2021-06-25
  • 2021-07-30
  • 2021-09-20
  • 2022-02-18
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-11-13
  • 2021-07-29
  • 2022-12-23
  • 2021-08-25
  • 2022-02-10
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案