2 回答

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) 將打印“值”

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)
}
- 2 回答
- 0 關(guān)注
- 196 瀏覽
添加回答
舉報(bào)