Go中的通用XML解析器

Go中的通用XML解析器,第1张

Go中的通用XML解析器

我发现的所有示例都显示了如何使用解编组功能将其读取到需要定义的对象中,但是这非常耗时,因为我需要定义很多我不打算使用的人员。

然后 ,不要 定义不使用的内容,而 定义要使用的内容。您不必创建完全覆盖XML结构的Go模型。

假设您有这样的XML:

<blog id="1234">    <meta keywords="xml,parsing,partial" />    <name>Partial XML parsing</name>    <url>http://somehost.com/xml-blog</url>    <entries count="2">        <entry time="2016-01-19 08:40:00"> <author>Bob</author> <content>First entry</content>        </entry>        <entry time="2016-01-19 08:30:00"> <author>Alice</author> <content>Second entry</content>        </entry>    </entries></blog>

假设您仅需要此XML中的以下信息

  • ID
  • 关键字
  • 博客名称
  • 作者姓名

您可以使用以下结构对这些所需的信息进行建模:

type Data struct {    Id   string `xml:"id,attr"`    meta struct {        Keywords string `xml:"keywords,attr"`    } `xml:"meta"`    Name    string   `xml:"name"`    Authors []string `xml:"entries>entry>author"`}

现在,您可以使用以下代码仅解析这些信息:

d := Data{}if err := xml.Unmarshal([]byte(s), &d); err != nil {    panic(err)}fmt.Printf("%+v", d)

输出(在Go Playground上尝试):

{Id:1234 meta:{Keywords:xml,parsing,partial} Name:Partial XML parsing Authors:[Bob Alice]}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5019973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存