簡體   English   中英

在Golang中解碼XML

[英]decoding XML in golang

我正在嘗試解碼以下xml。 由於某些原因,我無法解碼Id

package main

import (
    "encoding/xml"
    "fmt"
)

var data = `
<g xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ad="http://www.myschema.com/schema/ad/v1">
    <a xlink:href="http://example.com" data-bind="121">lala</a>
    <ad:ad id="1060469006">
</g>
`

type Anchor struct {
    DataBind  int    `xml:"data-bind,attr"`  
    XlinkHref string `xml:"http://www.w3.org/1999/xlink href,attr"`
    Id int  `xml:"http://www.myschema.com/schema/ad/v1 id,attr"` 
}

type Group struct {
    A Anchor `xml:"a"`
}

func main() {
    group := Group{}
    _ = xml.Unmarshal([]byte(data), &group)

    fmt.Printf("%#v\n", group.A)
}

您要解碼的結構正在XML的<a>元素上尋找ad:id屬性。 這不起作用有兩個原因:

  1. id屬性在另一個元素上。
  2. id屬性不在http://www.myschema.com/schema/ad/v1命名空間中。 沒有名稱空間前綴的屬性不會繼承其元素的名稱空間:相反,它們是空白名稱空間的一部分。

因此,要解決此問題,首先需要在Group中添加另一個帶有標簽xml:"http://www.myschema.com/schema/ad/v1 ad"字段xml:"http://www.myschema.com/schema/ad/v1 ad" ,並且該字段的結構定義需要使用帶有標簽的自己的字段xml:"id,attr"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM