为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用单个标签解析 XML 响应

如何使用单个标签解析 XML 响应

Go
智慧大石 2022-06-21 16:21:46
这是我的 XML 响应<?xml version="1.0" encoding="utf-8"?><string xmlns="http://tempuri.org/">{"journalseq":"7002924","statuscode":"0002","statusdesc":"Date placed : Invalid Date","msgsockheader":["data","data"],"msgmwheader":["data","data"],"msgmbheader":["data","data"],"msgmbmessage":["data","data"]}</string>如上所示,它只有一个带有结构的标签。我已经使结构像这样解析它:type Data struct {        xml.Name `xml:"string"`    }    type DoMBASEHoldAmountResult struct {        XMLName    xml.Name        Data       Data    }    var soapEnvelope DoMBASEHoldAmountResult    // parse for hold response    xml.Unmarshal(input, &soapEnvelope)但是soapEnvelope里面什么都没有。我在stackoverflow中找不到任何答案,我只能找到XML上有很多标签的时候。如何像这样解组 XML?此外,我怎样才能获取一些数据来做出回应?假设我只想将 journalSeq 和数组 msgsockheader 中的一个数据作为我的响应,我是否仍然需要解析所有内容,将其置于打击状态,然后从该结构中选择我需要的每个值?
查看完整描述

1 回答

?
手掌心

TA贡献1942条经验 获得超3个赞

您需要确保根结构的 ( DoMBASEHoldAmountResult) xmlname 与 xml 的根元素名称匹配。并且要解组由具有 xml.Name 字段的结构匹配的元素的内容,您可以使用[]byteorstring字段和innerxmltag 选项。


type DoMBASEHoldAmountResult struct {

    XMLName xml.Name `xml:"string"`

    String  string   `xml:",innerxml"`

}


var soapEnvelope DoMBASEHoldAmountResult


// parse for hold response

if err := xml.Unmarshal(input, &soapEnvelope); err != nil {

    panic(err)

}


fmt.Println(soapEnvelope.String)

https://play.golang.org/p/l4Coz9habxa


查看完整回答
反对 回复 2022-06-21
  • 1 回答
  • 0 关注
  • 177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信