我有一个带有以下标签的 html 输出。
<hr noshade>
我的结构是
type Hr struct {
TagName xml.Name `xml:"hr"`
}
当我尝试使用“encoding/xml”传递 html 时,它会抛出一个错误,指出该属性没有'='字符。
我已经看到抛出此错误是因为默认解码器将 XMLStrict设置为 true。
如何忽略这一点并继续解析文档(使用xml.Unmarshal())?
编辑:包括 XML 和使用的结构。
我发现了解码器设置,并使用了 NewDecoder,但似乎解组没有正确发生。
<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: {{ } {{{ }} {{ } []} {{ }} {{ } {{ } }}} {{ } {{ }}}}
慕无忌1623718
慕斯709654
相关分类