登录
首页 >  Golang >  Go问答

一文了解Golang的通用XML解析器

来源:Golang技术栈

时间:2023-03-08 21:30:35 436浏览 收藏

哈喽!大家好,很高兴又见面了,我是golang学习网的一名作者,今天由我给大家带来一篇《一文了解Golang的通用XML解析器》,本文主要会讲到golang等等知识点,希望大家一起学习进步,也欢迎大家关注、点赞、收藏、转发! 下面就一起来看看吧!

问题内容

是否有一些在 Go 中读取 XML 文档的通用方法?类似于 C# 中的 XmlDocument 或 XDocument 的东西?

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

xml.Unmarshal(...)

另一种方法是仅向前阅读,使用:

xml.NewDecoder(xmlFile)

此处描述:http ://blog.davidsingleton.org/parsing-huge-xml-files-with- go/

正确答案

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

然后 不要 定义你不会使用什么, 定义你将使用什么。您不必创建完美覆盖 XML 结构的 Go 模型。

假设您有一个这样的 XML:


    
    Partial XML parsing
    http://somehost.com/xml-blog
    
        
            Bob
            First entry
        
        
            Alice
            Second entry
        
    

假设您只需要此 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]}

今天关于《一文了解Golang的通用XML解析器》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于golang的内容请关注golang学习网公众号!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>