Go解析xml,Go xml struct ,Go xml 转数组

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: Go解析xml,Go xml struct ,Go xml 转数组

项目中使用到Go,两天看文档,一周出产品,第一次体验Go来开发,虽然写起代码很舒服,但是遇到xml转换是真的麻烦,没有php开发快啊,哈哈。不过Go是真的值得学习。先看下xml转结构体。

文件book.xml的内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<book category="CHILDREN">
    <title>Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
</book>
<book category="WEB">
    <title>Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
</book>


解析xml的代码如下,代码即文档

package main

import (
"encoding/xml"
"fmt"
"io/ioutil"
)

// bookMap 定义xml中的book元素映射
type bookMap struct {
XMLName xml.Name xml:"book"
Title string xml:"title"
Author string xml:"author"
Year string xml:"year"
Price float64 xml:"price"
}

// xmlMap 定义xml总映射
type xmlMap struct {
XMLName xml.Name xml:"bookstore" // 第一个根节点 , 每一个结构体一个xml.name
BookStoreName string xml:"name,attr" // 第一个根节点的属性值是name
BookStruct []bookMap xml:"book" // 每一个book元素,遇到数组类型需要新增加一个结构体来映射,例如bookMap结构体
}

func main() {
// 定义xml文件位置
xmlFile := "book.xml"

// 读取xml文件内容
xmlContent, _ := ioutil.ReadFile(xmlFile)

// 定义接收xml映射的结构体
var xmlReceiveMap xmlMap
err := xml.Unmarshal(xmlContent, &xmlReceiveMap)
if err != nil {

  fmt.Println(err)
  return

}

// 输出书店名称
fmt.Println("书店名称" + xmlReceiveMap.BookStoreName)

// 循环输出每条记录
for index, book := range xmlReceiveMap.BookStruct {

  fmt.Println(index, book)

}
}
貌似xml有多层就得定义几层结构体,每层结构体都有1个XMLname,有点累

目录
相关文章
|
25天前
|
存储 前端开发 Go
Go语言中的数组
在 Go 语言中,数组是一种固定长度的、相同类型元素的序列。数组声明时长度已确定,不可改变,支持多种初始化方式,如使用 `var` 关键字、短变量声明、省略号 `...` 推断长度等。数组内存布局连续,可通过索引高效访问。遍历数组常用 `for` 循环和 `range` 关键字。
|
1月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
17天前
|
Java Go 数据处理
go语言使用切片而非数组
【10月更文挑战第18天】
9 1
|
30天前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
1月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
1月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
11天前
|
安全 测试技术 Go
Go语言中的并发编程模型解析####
在当今的软件开发领域,高效的并发处理能力是提升系统性能的关键。本文深入探讨了Go语言独特的并发编程模型——goroutines和channels,通过实例解析其工作原理、优势及最佳实践,旨在为开发者提供实用的Go语言并发编程指南。 ####
|
1月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器
|
15天前
|
Go
|
1月前
|
XML Web App开发 JavaScript
XML DOM 解析器
XML DOM 解析器

推荐镜像

更多