第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Unmarshal 在 Go 中獲取 XML 命名空間前綴

使用 Unmarshal 在 Go 中獲取 XML 命名空間前綴

Go
元芳怎么了 2021-12-07 16:15:41
我想知道是否可以使用 .xml 中的Unmarshal方法獲取 XML 命名空間前綴 encoding/xml。例如,我有:<application xmlns="http://wadl.dev.java.net/2009/02" xmlns:xs="  </application>我想知道如何檢索xs定義 XMLSchema 的前綴,而不必使用該Token方法。
查看完整描述

2 回答

?
哆啦的時光機(jī)

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個贊

像其他所有屬性一樣獲取它:


type App struct {

    XS string `xml:"xs,attr"`

}

游樂場:http : //play.golang.org/p/2IOmkX1Jov。


如果你也有一個實(shí)際的xs屬性 sans ,那就更棘手了xmlns。即使您將命名空間 URI 添加到XS的標(biāo)記,您也可能會收到錯誤消息。


編輯:如果你想獲得所有聲明的命名空間,你可以UnmarshalXML在你的元素上定義一個自定義并掃描它的屬性:


type App struct {

    Namespaces map[string]string

    Foo        int `xml:"foo"`

}


func (a *App) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {

    a.Namespaces = map[string]string{}

    for _, attr := range start.Attr {

        if attr.Name.Space == "xmlns" {

            a.Namespaces[attr.Name.Local] = attr.Value

        }

    }


    // Go on with unmarshalling.

    type app App

    aa := (*app)(a)

    return d.DecodeElement(aa, &start)

}

游樂場:http : //play.golang.org/p/u4RJBG3_jW。


查看完整回答
反對 回復(fù) 2021-12-07
?
皈依舞

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個贊

目前(Go 1.5),這似乎是不可能的。


我找到的唯一解決方案是使用倒帶元素:


func NewDocument(r io.ReadSeeker) (*Document, error) {


    decoder := xml.NewDecoder(r)


    // Retrieve xml namespace first

    rootToken, err := decoder.Token()



    if err != nil {

        return nil, err

    }


    var xmlSchemaNamespace string


    switch element := rootToken.(type) {

    case xml.StartElement:


        for _, attr := range element.Attr {

            if attr.Value == xsd.XMLSchemaURI {

                xmlSchemaNamespace = attr.Name.Local

                break

            }

        }

    }


    /* Process name space */


    // Rewind

    r.Seek(0, 0)


    // Standart unmarshall

    decoder = xml.NewDecoder(r)

    err = decoder.Decode(&w)


    /* ... */

}


查看完整回答
反對 回復(fù) 2021-12-07
  • 2 回答
  • 0 關(guān)注
  • 295 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號