Golang 解析xml文件标签带冒号( : )解决方案

2023-05-16

背景:我们有项目需要使用golang语言解析rabbitmq.xml。并把里面的内容解析出来,但是在解析的时候遇到了问题,最后通过google搜索,在stackoverflow上找到了解决方案,目前好像没有中文的解决方案,所以就写下这篇博客,当其他的开发者遇到同样的问题时,可以方便排查,不走弯路。遇到无法解决的问题时请用Google,大概率还是可以找到解决方法的。

一、基础的解析XML方法

假如我们要解析如下的xml文件的内容:

<beans>
    <queue id="myQueue" name="myQueue" durable="true" auto-delete="false" exclusive="false" />
</beans>

1. 首先是构造对应的struct对象

type Beans struct {
	XMLName xml.Name `xml:"beans"`
	RabbitQueues []RabbitQueue `xml:"queue"`
}

type RabbitQueue struct {
	Name string `xml:"name,attr"`
	Id string `xml:"id,attr"`
}

2. 调用golang里面的方法,将字符串转为struct对象。然后直接利用struct对象。

var beans Beans;
content,err := ioutil.ReadFile(path+"/"+file_name)
if err != nil {
	fmt.Println(err)
}
xml.Unmarshal(content,&beans)

3. 这种情况解析一般都没什么问题,如果有不会可以搜索百度,有很多的回答。重点是介绍第二种情况

二、解析Tag带冒号的方法

1. 我们的项目需要解析的XML如下。和第一种会有区别在于<rabbit:queue> 这种tag里面是带了特殊符号( : )的。这种情况下直接构造struct并且是带:号的话,是解析会出错的。如(RabbitQueues []RabbitQueue `xml:"queue"`)

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:rabbit="http://www.springframework.org/schema/rabbit" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/rabbit
    http://www.springframework.org/schema/rabbit/spring-rabbit.xsd" >

    
    <rabbit:queue id="myQueue" name="myQueue" durable="true" auto-delete="false" exclusive="false" />
    <rabbit:queue id="myQueue2" name="${xx.xxx.xx}" durable="true" auto-delete="false" exclusive="false" />


    <!-- 定义监听器 -->
	<rabbit:listener-container connection-factory="mqConnectionFactory" acknowledge="auto">
    	<rabbit:listener queues="myQueue" ref="queueListenter"/>
	</rabbit:listener-container>

	<rabbit:listener-container connection-factory="connectionFactory" >  
         <rabbit:listener  queues="mq.asdf"  ref="asdfConsumer"/>  
    </rabbit:listener-container>  
    
   
</beans>

2. 正确的方法是,在struct构造的时候,加上namespace在前面就可以了。如下struct 

重点看: RabbitQueues []RabbitQueue `xml:"http://www.springframework.org/schema/rabbit queue"`

type Beans struct {
	XMLName xml.Name `xml:"beans"`
	RabbitQueues []RabbitQueue `xml:"http://www.springframework.org/schema/rabbit queue"`
	ListenerContainers []ListenerContainer `xml:"http://www.springframework.org/schema/rabbit listener-container"`
}

type RabbitQueue struct {
	Name string `xml:"name,attr"`
	Id string `xml:"id,attr"`
}

type ListenerContainer struct {
	Listeners []RabbitListener `xml:"http://www.springframework.org/schema/rabbit listener"`
}

type RabbitListener struct {
	Queues string `xml:"queues,attr"`
}

结尾:如果看完还是有问题。可以留言,看到后会帮你解决,或者去google golang parse xml tag : 等关键词。应该是可以找到解决方案的。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Golang 解析xml文件标签带冒号( : )解决方案 的相关文章

  • 如何使用 XML 序列化更改 XML 根名称?

    我试图在使用 C 进行 XML 序列化时更改根名称 它始终采用类名称 而不是我试图设置它的名称 using System using System Collections Generic using System Linq using Sy
  • 多线程读取xml文件

    我进行了很多搜索 但找不到适合我的问题的解决方案 我编写了一个 xml 文件 其中包含电视节目的所有剧集信息 它大小 38 kb 包含大约 680 个变量的属性和字符串 起初 我只是在 XMLTextReader 的帮助下阅读它 它在我的四
  • 用于 RSS feed 解析的 Objective-C 库?

    我正在为 iOS 应用程序寻找一个 Objective C 库 该库将解析并显示 RSS 提要中的文章 具体来说 我正在寻找为新闻网站制作一个应用程序 如果可能的话 该框架应该能够使用各种 RSS XML 结构 嗯 有两个不同的新闻网站 一
  • 将 < 转换为 < xml 文档

    我已读取 XML 文件并转换为 NSXMLDocument 对象 但是 由于节点的字符串内容中存在 我如何将文件作为普通 XML 文件写入 其中 lt 将被 感谢致敬 列宁 当 的时候 lt 字符出现在文本节点中 它将被序列化为 lt 当您
  • 如何在 xslt 2.0 中获取与此场景相关的特定 XML 元素索引?

    我想使用 XSLT2 0 将一个 xml 转换为另一个 xml 在这样做时 我想找到一些与我在此处解释的场景相关的 XML 元素索引 这是 XML 文档
  • xpath 根据子值选择父级

    我希望选择状态为 实时 的每个活动 我在 Drupal 的 XPath XML 解析器中使用它 并具有上下文基本查询和 xpath 查询字段 上下文 这是基本查询 所有其他查询都将在此上下文中运行 我目前有 语境 event status
  • SimpleXML:使用包含命名空间的 XML

    我正在尝试从 google picasa API 获取地理信息 这是原始 XML
  • Python 不擅长 XML 吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • XML中的根节点、根元素和文档元素有什么区别?

    我在读W3C XML 路径语言 XPath 版本 1 0 第 5 1 节 根节点 https www w3 org TR 1999 REC xpath 19991116 root node 根节点是树的根 除非作为树的根 否则不会出现根节点
  • 为什么在python中解析xml文件时会在文件中有“/>”的地方添加空格?

    当我解析 xml 文件然后将结果写入输出文件时 原始文件中存在 gt 的地方都会添加一个空格 有什么办法可以阻止它被创建吗 我编写了一些 python 代码来更新 xml 文件中的几个字段 并认为一切正常 但在原始文件和更新后的文件之间运行
  • 带单引号的 XPATH 查询[重复]

    这个问题在这里已经有答案了 有人知道如何解决这个问题吗 单引号让我陷入困境 nodes xml gt xpath item contains catalog Billy s Blogs title 我尝试以各种方式逃避它 但都抛出错误 no
  • Xml、xsl Javascript 排序

    我正在寻找一种使用 javascript 对 xml 数据进行排序的方法 并希望最终过滤掉数据 我知道这一切都可以在 xsl 文件中实现 但我想在客户端进行 我已经搜索了多个使用 javascript 进行排序的地方 但其中大部分要么太特定
  • Python:将 xml 文件转换为图像

    我希望使用 python 脚本将 xml 文件转换为图像 最好是 png 文件 我没有从我的在线研究中找到太多信息 我正在尝试使用 PIL 从这个帖子 https stackoverflow com questions 5741803 co
  • 我无法在本地主机上播放 .mp3 文件

    我正在使用 HTML jQuery 和 XML 制作音乐播放器 XML 文件包含所有歌曲的名称及其路径 我无法在本地访问 XML 文件 因为 Chrome 不允许这样做 所以我尝试在本地主机上运行它 但本地主机不允许我播放 mp3 我在本地
  • 如何保留标记?

    我有一个包含新闻报道的 XML 文档 并且新闻报道的 body 元素在纯文本中包含 p 标签 当我使用 XSL 检索正文时 例如
  • Php Curl HTTP POST REQUEST 使用嵌套键值对设置自定义标头

    如何使用 Curl 在 php 中设置此标头 CustomInfo 元素是数组 嵌套键值对 AuthenticationInfo 元素是数组 嵌套键值对
  • 具有自定义厚度的虚线分隔符

    我有一个虚线分隔符
  • xhtml 文档 - Lang 选项问题

    下面显示的两行有什么区别 如果我没有meta标签 会有什么后果 元版本是否会影响屏幕阅读器而顶部版本则不会 我对他们到底做什么有点困惑 预先感谢您的任何帮助 此致 Skip 深入研究辅助功能识别您的语言页面 http diveintoacc
  • 阻止 BeautifulSoup 将我的 XML 标签转换为小写

    我正在使用 BeautifulStoneSoup 来解析 XML 文档并更改一些属性 我注意到它会自动将所有 XML 标签转换为小写 例如我的源文件有
  • 十亿笑 XML DoS 攻击是如何运作的?

    gt

随机推荐

  • 深度图像帧差法处理以及CV16UC1深度图像的存储方式

    最近为了拾取桌面上的任务目标 xff0c 采用了实时图像与背景图像相减的方法来进行 xff0c 因为采用彩色图像相减会有影子的干扰 xff0c 所以采用了深度图像 但是深度图像的Mat是CV16UC1格式的 矩阵内部数据采用uint 16格
  • Couldn't find executable named joy_node below /opt/ros/kinetic/share/joy解决方法

    最近想用joy node这个节点 xff0c 然后就通过 sudo apt get install ros kinetic joy 去安装 xff0c 然后运行rosrun joy joy node时候一直错误显示Segmentation
  • ros修改map_server地图发布的map关联的坐标系frame_id(多机器人联合建图用)

    帮师弟做多机器人联合建图的时候 遇到了map的坐标系问题如下 map server发布的 map话题包含了frame坐标系关联 想要正确的让多个机器人共同建图导航需要修改 map话题以及其绑定的frame坐标系 防止机器人之间的相互冲突 下
  • ROS传输图像带宽不够用的解决方法(realsenseD415压缩图像)

    最近在做图像的深度学习识别 xff0c 但是移动机器人上的电脑配置不够 xff0c 只能用我的电脑远程的去处理图像 xff0c 但是遇到了严重的带宽瓶颈 xff0c 按照我的电脑150Mbps的无线网卡来算 xff0c 每秒的极限传输速度就
  • dockerfile配置运行

  • 气压计高度融合—卡尔曼滤波

    实验平台 xff1a 自制飞控板 xff0c STM32F407主控 xff0c 传感器 xff1a MPU6050 MS5611 正文 xff1a 前几天看了这篇文章 xff0c 做了气压计的高度融合 http www zxiazai c
  • GD32F303移植FreeRTOS

    GD32F303移植FreeRTOS 一 移植环境 系统 xff1a WIN7 MDK xff1a keil v5 26 开发板 xff1a GD32F303C EVAL 固件库 xff1a V1 0 2 FreeRTOS版本 xff1a
  • FreeRTOS静态创建任务

    一 静态方式创建任务和删除任务 1 gt 测试环境 系统 xff1a WIN7 MDK xff1a keil v5 26 开发板 xff1a GD32F303C EVAL 固件库 xff1a V1 0 2 FreeRTOS版本 xff1a
  • python实现smote处理正负样本失衡问题

    机器学习中难免遇到正负样本不平衡问题 xff0c 处理办法通常有梁总 xff0c 一 xff1a 过采样 xff0c 增加正样本数据 xff1b 二 xff1a 欠采样 xff0c 减少负样本数据 xff0c 缺点是会丢失一些重要信息 sm
  • echarts 饼图hover效果,饼图中间显示自定义信息

    option 61 tooltip show true trigger 39 item 39 position 39 35 39 39 32 39 backgroundColor 39 implements 39 textStyle col
  • MATLAB在线工具

    在线Matlab工具 xff0c 不用安装matlab了 xff0c 里面的语法几乎和matlab相同 matlab网页版 xff1a 1 octave online http octave online net 2 matlab onli
  • Apache IoTDB下载与安装

    1 中文官方文档 xff1a https iotdb apache org zh 2 下载地址 xff1a https iotdb apache org zh Download 发行版本踩了个小坑 xff1a 1 0 0版本启动时如果作为单
  • 【游戏开发】游戏开发书籍汇总

    1 游戏设计的艺术 2 游戏设计的100个原理 3 我在美国学游戏设计 4 游戏新手村 xff1a 从零开始做游戏 5 Directx游戏开发终极指南 6 Windows游戏编程大师技巧 7 快乐之道 xff1a 游戏设计的黄金法则 人类的
  • 【获奖公布】“我的2016”主题征文活动

    还记得2015的年末 xff0c 2016的新年伊始 xff0c 你给自己定下的目标 xff0c 对自己许下的诺言么 xff1f 时光荏苒 xff0c 一年又在指缝间溜走了 xff0c 离2016的结束还剩十多天 xff0c 在接下来的这十
  • Dockerfile介绍与指令解析

    一 Dockerfile介绍 镜像是容器的基础 xff0c 每次执行docker run的时候都会指定哪个镜像作为容器运行的基础 我们之前的例子都是使用来自docker hub的镜像 xff0c 直接使用这些镜像只能满足一定的需求 xff0
  • Kubernetes快速上手指南,让你所见即所得

    版权声明 xff1a 本文为 ABC实验室 原创文章 xff0c 版权所有 xff0c 侵权必究 xff01 编者语 Kubernetes作为新一代云计算平台 xff0c 自2014年开源以来得到快速发展 xff08 2016年 xff09
  • 使用github管理科研文献

    使用github管理科研文献 一 准备工作 xff1a 二 建立远程科研文献库三 远程科研文献数据库的维护四 其他PC客户端的访问 每个科研工作者都需要建立自己的科研文献库 以楼主本人为例 xff0c 我通常在实验室的台式机上完成科研文献的
  • RBF神经网络逼近在线自适应控制(MATLAB实现之S函数模块分析)

    上次用了参考模型的方法用RBF神经网络试了一下放到自适应控制模型上 xff0c 其实跟踪效果还可以 xff0c 放大了有点不舒服就是了 xff0c 差了一点点 xff0c 然后看了看书的第四章 xff0c 知道采用梯度下降法调整神经网络权值
  • 基于RBF神经网络的Flexible Robot自适应控制(论文笔记)

    上一篇笔记 https blog csdn net qq 24182661 记录的是第一篇论文2015 Continuum Robots for Medical Applications A survey的论文笔记 xff0c 主要做的笔记
  • Golang 解析xml文件标签带冒号( : )解决方案

    背景 xff1a 我们有项目需要使用golang语言解析rabbitmq xml 并把里面的内容解析出来 xff0c 但是在解析的时候遇到了问题 xff0c 最后通过google搜索 xff0c 在stackoverflow上找到了解决方案