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

我正在尝试解析以下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解析的新手,所以可能是我在这里错过了一些东西。


开心每一天1111
浏览 175回答 1
1回答

一只名叫tom的猫

您在结构标记中使用了错误的语法。WID和Employee_ID的示例:type wdID struct {&nbsp; &nbsp; ID&nbsp; &nbsp; &nbsp; string `xml:"type,attr"`&nbsp; &nbsp; Content string `xml:",chardata"`}type exampleStruct struct {&nbsp; &nbsp; XMLName xml.Name `xml:"Envelope"`&nbsp; &nbsp; WIDs&nbsp; &nbsp; &nbsp;[]wdID&nbsp; &nbsp;`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的评论中阅读,则可以找到有关结构标记细节的一些花絮
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go