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文件标签带冒号( : )解决方案 的相关文章

随机推荐

  • 深度图像帧差法处理以及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上找到了解决方案