Go中的通用XML解析器

ArkadyB

在Go中有阅读XML文档的一些通用方法吗?类似于C#中的XmlDocument或XDocument吗?

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

xml.Unmarshal(...)

另一种方法是仅使用以下方法转发阅读:

xml.NewDecoder(xmlFile) 

在这里描述:http : //blog.davidsingleton.org/parsing-huge-xml-files-with-go/

icza

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

然后,不要定义不使用的内容,而定义要使用的内容。您不必创建完全覆盖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]}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

angularjs中的通用路由解析器?

来自分类Dev

angularjs中的通用路由解析器?

来自分类Dev

通用Web解析器

来自分类Dev

在C中实现xml解析器

来自分类Dev

python中的解析器XML

来自分类Dev

Scala 2.10中的通用类型解析器

来自分类Dev

通用解析器,可在C#中输出代码

来自分类Dev

Xml 解析器在 XML 布局中找不到属性

来自分类Dev

Kotlin通用接口解析器

来自分类Dev

通用Feed解析器问题

来自分类Dev

Perl XML解析器

来自分类Dev

解析器XML问题

来自分类Dev

Java中的XML JDOM解析器中的OutOfMemoryError

来自分类Dev

C#中的WP8 Xml解析器

来自分类Dev

faces-config.xml中的EL解析器

来自分类Dev

处理描述,Android,RSS,XML解析器中的标签

来自分类Dev

在Java中读取xml文件和解析器

来自分类Dev

Dom XML解析器,检测文本中的元素

来自分类Dev

C#中的WP8 Xml解析器

来自分类Dev

在Sax XML解析器中获取父子层次结构

来自分类Dev

在Java中读取xml文件和解析器

来自分类Dev

如何从NodeJS中的XML解析器获取数据

来自分类Dev

使用xml解析器读取xml

来自分类Dev

IIS上托管的服务中的WCF通用类型解析器

来自分类Dev

如何在Angular中制作通用解析器(2+)

来自分类Dev

boost :: spirit :: x3中的通用解析器生成器

来自分类Dev

xml解析器不起作用

来自分类Dev

处理xml解析器错误

来自分类Dev

小部件的Wirecloud xml解析器