指向XML的链接:http://www.guru.com/rss/jobs/
尝试使用encoding/xml
解析XML时,请获取错误:
第1行的XML语法错误:XML名称无效:t
我知道,这个XML已经破了,但我怎么可以忽略它,并解析第一个项目?
XML的最后一项如下所示:
<item>
<title>Online Ad Posting Data Entry Jobs</t
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Guru Jobs</title>
<link>http://www.guru.com</link>
<description>Guru Jobs</description>
<lastBuildDate>Sun, 15 Nov 2015 11:04:51 GMT</lastBuildDate>
<language>en-us</language>
<atom:link href='http://www.guru.com/rss/jobs/' rel="self" type="application/rss+xml" />
</channel>
</rss>
itle>
<link>http://www.guru.com/jobs/online-ad-posting-data-entry-jobs/1189496</link>
<guid>http://www.guru.com/jobs/online-ad-posting-data-entry-jobs/1189496</guid>
</item>
代码示例:
type Rss2 struct {
ItemList []Item `xml:"channel>item"`
}
type Item struct {
Title string `xml:"title"`
Link string `xml:"link"`
Description string `xml:"description"`
PubDate string `xml:"pubDate"`
GUID string `xml:"guid"`
}
r := Rss2{}
reader := bytes.NewReader(xmlRead)
decoder := xml.NewDecoder(reader)
decoder.CharsetReader = charset.NewReaderLabel
decoder.Strict = false
err = decoder.Decode(&r)
if err != nil { fmt.Printf(err.Error()) }
答案 0 :(得分:0)
应正确打开和关闭XML标记。从你发布的XML看起来,XML声明似乎还没有开始。
<?xml version="1.0" encoding="utf-8"?>
这应该在开头。希望这有帮助
答案 1 :(得分:0)
有问题的XML似乎是错误的,
这是XML文件的正确版本和Go代码
XML文件:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Guru Jobs</title>
<link>http://www.guru.com</link>
<description>Guru Jobs</description>
<lastBuildDate>Sun, 15 Nov 2015 11:04:51 GMT</lastBuildDate>
<language>en-us</language>
<atom:link href='http://www.guru.com/rss/jobs/' rel="self" type="application/rss+xml" />
<item>
<title>Imaging for Bespoke Curtain Website</title>
<link>http://www.guru.com/jobs/imaging-for-bespoke-curtain-website/1203083</link>
<guid>http://www.guru.com/jobs/imaging-for-bespoke-curtain-website/1203083</guid>
<description><![CDATA[<b>Description:</b> Hi,We are currently developing a made to measure curtain website and are looking for help in develo...<br><b>Category:</b> Web, Software & IT<br><b>Required skills:</b> ecommerce, imaging software, opencart, web development<br><b>Fixed Price budget:</b> $500-$1k<br><b>Job type:</b> Public<br><b>Freelancer Location:</b> Worldwide<br>]]>
</description>
<pubDate>Mon, 04 Jan 2016 12:14:09 GMT</pubDate>
</item>
</channel>
</rss>
Go Code代码
package main
import (
"io/ioutil"
"encoding/xml"
"fmt"
)
type Rss2 struct {
ItemList []Item `xml:"channel>item"`
}
type Item struct {
Title string `xml:"title"`
Link string `xml:"link"`
Description string `xml:"description"`
PubDate string `xml:"pubDate"`
GUID string `xml:"guid"`
}
func main() {
r := Rss2{}
xmlContent, _ := ioutil.ReadFile("example2.xml")
if err := xml.Unmarshal(xmlContent, &r); err != nil {
panic(err)
}
fmt.Println("RSS item :", r)
}
现在,您可以迭代并在XML中找到所需的数据。