我正在嘗試解析以下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>[email protected]</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的評論中閱讀,則可以找到有關結構標記細節的一些花絮
- 1 回答
- 0 關注
- 195 瀏覽
添加回答
舉報
0/150
提交
取消