lan龍 2023-01-11 15:22 采纳率: 100%
浏览 7
已结题

如何把soap xml string转对象,里面带有&lt等转义符

如何把soap xml string转对象,里面带有<等转义符
xml如图下,要把caseCode后的提取为对象
<?xml version=\"1.0\" encoding=\"utf-8\"?>
   <soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">
      <soap:Body>
         <serviceResponse xmlns=\"http://tempuri.org/\">
            <serviceResult>
               <Header>UWBCDtResponse</Header><Type>string</Type><Return>{\"caseCode\":\"abc\",\"bagList\":[{\"reelList\":[],\"bagCode\":\"12\",\"qty\":78000.0},{\"reelList\":[],\"bagCode\":\"123\",\"qty\":78000.0},{\"reelList\":[],\"bagCode\":\"1234\",\"qty\":78000.0},{\"reelList\":[],\"bagCode\":\"12345\",\"qty\":78000.0},{\"reelList\":[],\"bagCode\":\"123456\",\"qty\":78000.0},{\"reelList\":[],\"bagCode\":\"123456\",\"qty\":78000.0},{\"reelList\":[],\"bagCode\":\"1234567\",\"qty\":78000.0}]}</Return><Tailer>UWBCEnd</Tailer>
            </serviceResult>
</serviceResponse>
</soap:Body>
</soap:Envelope>

对象:

public class EcsBarcodeVo implements Serializable {

    private static final long serialVersionUID = 1L;

    @XmlAttribute
    private String caseCode;

    @XmlAttribute
    private List<BagList> bagList;

    private class BagList{

        private List<String> reelList;

        private String bagCode;

        private BigDecimal qty;
}
个人是参考这里的方法写了个,
public Object conver(String clazz) throws XMLStreamException, JAXBException {
        Reader reader = new StringReader(clazz);
        XMLInputFactory factory = XMLInputFactory.newInstance(); // Or newFactory()
        XMLStreamReader xsr = factory.createXMLStreamReader(reader);
        xsr.nextTag();
        while(!xsr.getLocalName().equals("return")) {
            xsr.nextTag();
        }
        JAXBContext jc = JAXBContext.newInstance(EcsBarcodeVo.class);
        Unmarshaller unmarshaller = jc.createUnmarshaller();
        JAXBElement<EcsBarcodeVo> jb = unmarshaller.unmarshal(xsr, EcsBarcodeVo.class);
        xsr.close();

        EcsBarcodeVo customer = jb.getValue();
        System.out.println(customer.getCaseCode());
        System.out.println(customer.getBagList());
        return null;
    }

但是不知道是不是有转义符的原因,报错Message: found: CHARACTERS, expected START_ELEMENT or END_ELEMENT

求人帮忙解答下如何才能转对象
  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 已结题 (查看结题原因) 1月11日
    • 创建了问题 1月11日

    悬赏问题

    • ¥15 关于注册功能需求,请帮我看看
    • ¥100 孟德尔随机化代码,自动找暴露因素
    • ¥15 在使用libyuv库时的一个NV12转RGB24的问题
    • ¥15 QT+Gstreamer框架开发视频采集,无法将waylandsink视频绑定qt窗口
    • ¥15 vs2010开发 WFP(windows filtering platform)异常
    • ¥30 8*8*25的矩阵和1*8*25的矩阵相乘
    • ¥15 Ubuntu20.04主机有两个网口,如何配置将其中一个网口用来接入外网,另一个网口用来给其他设备上网
    • ¥15 ml307r-dl如何实现录音功能
    • ¥15 付费100元 悬赏iphone 15pm 链接watch s7 移动一号双终端 下载不了esim文件解决办法?
    • ¥60 云南移动网络无法访问网站,但联通电信可正常访问