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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Go XML - 解析 HTML 中的布爾屬性會(huì)導(dǎo)致 XML 驗(yàn)證錯(cuò)誤

Go XML - 解析 HTML 中的布爾屬性會(huì)導(dǎo)致 XML 驗(yàn)證錯(cuò)誤

Go
溫溫醬 2021-11-29 17:01:38
我有一個(gè)帶有以下標(biāo)簽的 html 輸出。<hr noshade>我的結(jié)構(gòu)是type Hr struct {    TagName xml.Name `xml:"hr"`}當(dāng)我嘗試使用“encoding/xml”傳遞 html 時(shí),它會(huì)拋出一個(gè)錯(cuò)誤,指出該屬性沒有'='字符。我已經(jīng)看到拋出此錯(cuò)誤是因?yàn)槟J(rèn)解碼器將 XMLStrict設(shè)置為 true。如何忽略這一點(diǎn)并繼續(xù)解析文檔(使用xml.Unmarshal())?編輯:包括 XML 和使用的結(jié)構(gòu)。我發(fā)現(xiàn)了解碼器設(shè)置,并使用了 NewDecoder,但似乎解組沒有正確發(fā)生。<html><head><title>Some title</title></head><body> <h2>Title here</h2> <ul>  <li><a href="../">..</a></li>  <li><a href="file1.txt">file1.txt</a></li>  <li><a href="file2.zip">file2.zip</a></li>  ..... </ul> <hr noshade><em>Powered by <a href="http://subversion.apache.org/">Apache Subversion</a> version 1.7.18 (r1615261).</em></body></html>到目前為止我寫的代碼type Anchor struct {    TagName xml.Name `xml:"a"`    Href    string   `xml:"href,attr"`}type ListEntry struct {    TagName  xml.Name `xml:"li"`    Filename Anchor}type DirList struct {    XMLName xml.Name `xml:"ul"`    Entries []ListEntry}type Header struct {    TagName xml.Name `xml:"h2"`}type Head struct {    TagName xml.Name `xml:"head"`    title   Title}type Title struct {    TagName xml.Name `xml:"title"`}type html struct {    TagName xml.Name `xml:"html"`    body    Body     `xml:"body"`    head    Head}type Body struct {    H2            Header    DirectoryList DirList    hr            Hr    em            Em}type Hr struct {    TagName xml.Name `xml:"hr"`}type Em struct {    TagName xml.Name `xml:"em"`    link    Anchor}   contents := retrieveFromWeb()    htmlTag := html{}    decoder := xml.NewDecoder(strings.NewReader(contents))    decoder.Strict = false    decoder.AutoClose = xml.HTMLAutoClose    decoder.Entity = xml.HTMLEntity    err = decoder.Decode(&htmlTag)    fmt.Println("DirList: ", htmlTag)電流輸出DirList:  {{ } {{{ }} {{ } []} {{ }} {{ } {{ } }}} {{ } {{ }}}}
查看完整描述

2 回答

?
慕無忌1623718

TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以使用解碼器來解組。使用解碼器,您可以關(guān)閉嚴(yán)格解析并克服您面臨的錯(cuò)誤。由于您只放置了一行 xml/html 進(jìn)行解析,因此我假設(shè)根元素和 hr 標(biāo)記之間的某些值和下面的值是示例實(shí)現(xiàn)


package main


import (

    "encoding/xml"

    "fmt"

    "strings"

)


type Hr struct {

    XMLName xml.Name `xml:"a"`

    TagName string   `xml:"hr"`

}


func main() {   

    s := "<a><hr noshade>value</hr></a>"


    hr := &Hr{}

    d := xml.NewDecoder(strings.NewReader(s))

    d.Strict = false

    err := d.Decode(hr)

    if err != nil {

        panic(err)

    }


    fmt.Println(hr.TagName)

}

fmt.Println(hr.TagName) 將打印“值”


查看完整回答
反對(duì) 回復(fù) 2021-11-29
?
慕斯709654

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊

您的代碼中有很多錯(cuò)誤:

  • 如果屬性不是公開的,則不能被另一個(gè)包訪問(xml在這種情況下):將所有屬性設(shè)為大寫。

  • li 缺少標(biāo)簽名稱。

看到這個(gè)工作代碼

http://play.golang.org/p/rkNf2OfvdM

package main


import (

    "encoding/xml"

    "fmt"

    "log"

    "strings"

)


type Anchor struct {

    XMLName xml.Name `xml:"a"`

    Href    string   `xml:"href,attr"`

}


type ListEntry struct {

    XMLName xml.Name `xml:"li"`

        Filename Anchor

}


type DirList struct {

    XMLName xml.Name    `xml:"ul"`

    Entries []ListEntry `xml:"li"`

}


type Header struct {

    XMLName xml.Name `xml:"h2"`

}


type Head struct {

    XMLName xml.Name `xml:"head"`

    Title   Title

}


type Title struct {

    XMLName xml.Name `xml:"title"`

}


type Html struct {

    XMLName xml.Name `xml:"html"`

    Body    Body     `xml:"body"`

    Head    Head

}


type Body struct {

    H2            Header

    DirectoryList DirList

    Hr            Hr

    Em            Em

}


type Hr struct {

    XMLName xml.Name `xml:"hr"`

}


type Em struct {

    XMLName xml.Name `xml:"em"`

    link    Anchor

}


var contents = `<html><head><title>Some title</title></head>

<body>

 <h2>Title here</h2>

 <ul>

  <li><a href="../">..</a></li>

  <li><a href="file1.txt">file1.txt</a></li>

  <li><a href="file2.zip">file2.zip</a></li>

 </ul>

 <hr noshade><em>Powered by <a href="http://subversion.apache.org/">Apache Subversion</a> version 1.7.18 (r1615261).</em>

</body></html>`


func main() {

    htmlTag := Html{}

    decoder := xml.NewDecoder(strings.NewReader(contents))

    decoder.Strict = false

    decoder.AutoClose = xml.HTMLAutoClose

    decoder.Entity = xml.HTMLEntity


    err := decoder.Decode(&htmlTag)

    if err != nil {

        log.Fatal(err)

    }


    fmt.Printf("DirList: %v %#[1]v\n", htmlTag)

}


查看完整回答
反對(duì) 回復(fù) 2021-11-29
  • 2 回答
  • 0 關(guān)注
  • 196 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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