go - 从其值中解组 XML RPC
问题描述
我在尝试将 XMLRPC 解组为 Go Struct 时遇到一些问题
我要解组的数据结构如下:
rawXMLData := `<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>RESPONSECODE</name>
<value><string>68</string></value>
</member>
<member>
<name>REQUESTID</name>
<value><string>120001</string></value>
</member>
<member>
<name>MESSAGE</name>
<value><string>Currently Unavailable, Please try again later </string></value>
</member>
<member>
<name>TRANSACTIONID</name>
<value><string>271231425</string></value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
`
我正在尝试将数据放入此结构中
type Response struct {
RESPONSECODE string `xml:RESPONSECODE`
REQUESTID string `xml:REQUESTID`
MESSAGE string `xml:MESSAGE`
TRANSACTIONID string `xml:TRANSACTIONID`
}
但它不起作用,当我试图用
val := Response{}
err := xml.Unmarshal([]byte(rawXMLData), &val)
if err != nil {
fmt.Println(err)
}
fmt.Println("val = ", val)
//in terminal
//val = { }
需要取的值是<name>
and <value>
,表示标签及其值(在相应的 golang 结构中)。我认为问题在于字段标签(对于 golang 结构)位于 xmltag 值内,而不是 xmltag 本身。而且我还没有找到任何关于如何访问这个值的线索。
目前我尝试了一个这样的新结构,然后尝试手动将数组解析到结构中。
type Member struct {
Name string `xml:"name"`
Value string `xml:"value>string"`
}
type Resps struct {
XMLName xml.Name `xml:"methodResponse"`
Members []Member `xml:"params>param>value>struct>member"`
}
并设法得到这个
value := Resps{}
xml.Unmarshal([]byte(rawXMLData), &value)
fmt.Println(value.Members)
// terminal result:
// [{RESPONSECODE 68} {REQUESTID 120001} {MESSAGE Currently Unavailable, Please try again later} //{TRANSACTIONID 271231425}]
//
// then put each of the value.Members into corresponding struct field
是否有任何其他解决方案可以直接将 rawXML 数据放入第一个结构中?还是我们需要像我一样分两步解析它?
解决方案
推荐阅读
- selenium-webdriver - OKTA 应用程序的 API 自动化
- vb.net - VB.Net 公共财产
- html - 在桌面和移动布局上组织响应式图像
- c++ - 从csv文件c ++中删除一行
- r - 在R中计算过去3周的平均值和标准同一天
- bash - 如何获取文件夹的用户权限并将其分配给Linux中的另一个文件夹
- docker - V1 到 V2 路径前缀
- python - 找不到元素时,如何在本网站上使用 Python Selenium webdriver 单击按钮?
- c# - 如何更新字符串列表
- python - “OSError:无法打开文件(未找到文件签名)”试图运行“bert_model = BertModel.from_pretrained(“bert-base-cased”,from_tf=True)”