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

解析标记中带有冒号的复杂嵌套 xml

解析标记中带有冒号的复杂嵌套 xml

Go
开心每一天1111 2022-08-09 16:43:53
我正在尝试解析以下xml:<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">   <env:Body>      <wd:Get_Workers_Response wd:version="v35.0" xmlns:wd="urn:com.workday/bsvc">         <wd:Request_References>            <wd:Worker_Reference>               <wd:ID wd:type="WID">11112222333444</wd:ID>               <wd:ID wd:type="Employee_ID">123456789</wd:ID>            </wd:Worker_Reference>         </wd:Request_References>        <wd:Response_Data>            <wd:Worker>               <wd:Worker_Descriptor>user xyz</wd:Worker_Descriptor>               <wd:Worker_Data>                  <wd:Worker_ID>123456789</wd:Worker_ID>                  <wd:User_ID>user_one_id</wd:User_ID>                  <wd:Personal_Data>                     <wd:Contact_Data>                       <wd:Email_Address_Data>                           <wd:Email_Address>abc@gmail.com</wd:Email_Address>                           <wd:Usage_Data wd:Public="1">                              <wd:Type_Data wd:Primary="1">                                 <wd:Type_Reference>                                    <wd:ID wd:type="WID">12346780</wd:ID>                                    <wd:ID wd:type="Communication_Usage_Type_ID">WORK</wd:ID>                                 </wd:Type_Reference>                              </wd:Type_Data>                           </wd:Usage_Data>                           <wd:Email_Reference>                              <wd:ID wd:type="WID">0987654321</wd:ID>                              <wd:ID wd:type="Email_ID">EMAIL_REFERENCE-3-1</wd:ID>                           </wd:Email_Reference>                           <wd:ID>EMAIL_REFERENCE-3-1</wd:ID>                        </wd:Email_Address_Data>                     </wd:Contact_Data>                                       </wd:Personal_Data>}我无法进入标签内部。由于冒号,解析似乎不起作用。我也尝试逃避冒号()。我需要来自此 xml 的以下值:, from 和 哪个位于 嵌套标记内<env:Body>env\:BodyWIDEmployee_IDWorker_ReferenceEmail_IDwd:Email_Address_Data任何帮助将不胜感激,我是xml解析的新手,所以可能是我在这里错过了一些东西。
查看完整描述

1 回答

?
一只名叫tom的猫

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

您在结构标记中使用了错误的语法。


WID和Employee_ID的示例:


type wdID struct {

    ID      string `xml:"type,attr"`

    Content string `xml:",chardata"`

}


type exampleStruct struct {

    XMLName xml.Name `xml:"Envelope"`

    WIDs     []wdID   `xml:"Body>Get_Workers_Response>Request_References>Worker_Reference>ID"`

}

此外,由于标签的名称会重复(多个“ID”),因此必须将它们解析为一个数组,在该数组中可以获得区分它们的唯一属性(wdID结构)。


使用您提供的较小版本的 XML 的工作示例进入 Playground:https://play.golang.org/p/BS8crPQ7G1n


编辑:https://golang.org/pkg/encoding/xml/#Unmarshal 如果您在XML Unmarshal'er的评论中阅读,则可以找到有关结构标记细节的一些花絮


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号