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

这是我的 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 中的一个数据作为我的响应,我是否仍然需要解析所有内容,将其置于打击状态,然后从该结构中选择我需要的每个值?


智慧大石
浏览 178回答 1
1回答

手掌心

您需要确保根结构的 ( DoMBASEHoldAmountResult) xmlname 与 xml 的根元素名称匹配。并且要解组由具有 xml.Name 字段的结构匹配的元素的内容,您可以使用[]byteorstring字段和innerxmltag 选项。type DoMBASEHoldAmountResult struct {&nbsp; &nbsp; XMLName xml.Name `xml:"string"`&nbsp; &nbsp; String&nbsp; string&nbsp; &nbsp;`xml:",innerxml"`}var soapEnvelope DoMBASEHoldAmountResult// parse for hold responseif err := xml.Unmarshal(input, &soapEnvelope); err != nil {&nbsp; &nbsp; panic(err)}fmt.Println(soapEnvelope.String)https://play.golang.org/p/l4Coz9habxa
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go