位置: 编程技术 - 正文

利用Shell解析处理XML的方法汇总(shell 解析yml)

编辑:rootadmin

推荐整理分享利用Shell解析处理XML的方法汇总(shell 解析yml),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:shell 解析配置文件,shell脚本解析文件,shell 解析参数,shell 解析配置文件,shell解析ini,shell 解析yml,shell 解析yml,shell 解析参数,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

前几天在干活的时候遇到一个需要解析处理xml文件的一个需求,当时考虑到逻辑比较复杂,因此用java慢慢搞了搞。不过这个需求经常会变,每次变化之后都要重新找到jar包的代码,改了之后还要替换原来的jar包,一来不方便修改,二来不方便统一保存代码,三来也不方便查看jar包的功能。

其实对于这种比较灵活的功能,最方便高效的做法是采用一些脚本语言,比如python,ruby等等,开发效率高,而且也能处理一些复杂逻辑。但是由于种种原因,工作中有的机器没有安装这些语言的解释器。因此不得已,研究了一波用shell脚本解析xml的方法。

说到底,shell还是不太适合处理复杂的逻辑,但是对于一些简单的查找替换等需求,用shell来搞还是挺方便的。

我这里主要采用了下面三个工具:

xmllint xpath xml2

下面就分别总结下这三个工具的用法,方便以后查阅。

xmllint

简述

xmllint其实是由一个叫libxml2的c语言库函数实现的一个小工具,因此效率比较高,对不同系统的支持度也很好,功能也比较全。他一般属于libxml2-utils这个软件包,因此类似与sudo apt install libxml2-utils的命令就可以安装。

功能

xmllint至少支持下面几个常用功能:

支持xpath查询语句 支持类shell的交互式查询 支持xml格式验证 支持dtd,xsd对xml的校验 支持编码转换 支持xml格式化 支持去空格压缩 支持时间效率统计

其实我们比较常用的功能主要也就是三个?xpath查询、去空格和格式化、校验。

比如当前有sample.xml:

执行xpath查询:

去空格:

格式化:

利用Shell解析处理XML的方法汇总(shell 解析yml)

xsd校验:

注意:校验结果信息是输出到stderr中的,工具默认会把原文件回显到stdout里,可以加?noout参数关闭stdout回显。

流传递:

xmllint默认是传递文件名,如果我们希望用通过管道传递文件流的方式传递数据,我们可以这样弄:

xpath

简述

xpath工具其实是封装了的perl脚本,本身也只有两百来行,功能比较专一,就是提供xpath的查询功能。他一般属于libxml-xpath-perl这个软件包,因此类似于sudo apt install libxml-xpath-perl的命令就可以安装。像suse之类的系统还会直接自带。

功能

不同系统中安装的版本可能不同,不过基本功能是类似的:

默认会将查询呢结果输出到stdout中,将说明信息输出到stderr中。如果为了方便收集结果,可以将stderr重定向到/dev/null,或者加上-q参数:

xpath相比xmllint的xpath功能有一点点区别很重要,如果xpath匹配了多个结果,那么xpath就会分行输出,而xmllint则会揉到一行:

xml2

简述

xml2这个工具感觉知道的人并不多,不过其实他在某些场景里跟其他命令配合能起到奇效。这个工具的开发人员的博客似乎已经挂掉了,不过目测应该用C以及libxml2库写的一个小工具。一般是在xml2软件包中,因此类似sudo apt install xml2的命令就可以安装。

功能

这个工具包含六个命令:xml2,2xml,html2,2html,csv2,2csv,功能也非常unix,就是分别将xml,html,csv格式与一种他称之为“flat format”的格式进行转换。举个例子:

这种自定义的格式非常简单而巧妙,有的表示新建节点(/books/book),有的表示给节点赋值(/books/book/name=book1),有的表示给节点的属性赋值(/books/book/@id=1)。写法跟xpath很像但又不完全一样。而且相互对应的两个命令放在一起能做到幂等。

那么这种转化命令有什么用呢?其实我们经常会遇到一些创建xml文件的需求,但是直接按照xml格式动态生成就非常麻烦,这时候用flat format做个中转就非常方便了:

上面这段代码就生成了与sample.xml一模一样的new_sample.xml.

总结

标签: shell 解析yml

本文链接地址:https://www.jiuchutong.com/biancheng/379770.html 转载请保留说明!

上一篇:Linux下.tar.xz文件的解压教程详解(linux .tar文件)

下一篇:Linux上的文件搜索命令实例详解(linux系统如何搜索文件内容)

  • 申报个体经营所得税时营业外收入怎么填
  • 主营业务成本的数据从哪里来的
  • 公转私人账户怎么转
  • 年终销项税额要结账吗
  • 软件和硬件可以用什么代名词
  • 抽奖中的汽车需要交购置税吗
  • 什么情况下要安起搏器
  • 现金账怎么记账图例
  • 公司注销时有大额应付款如何做账务处理合适?
  • 企业发生的辞退福利
  • 不开发票的收入如何申报纳税
  • 怎么填报清算所得税申报表?
  • 个人出租房屋应该注意什么
  • 小规模纳税人购入货物收到增值税专用发票
  • 上月未抵扣完的进项税本月可以抵扣吗
  • 跨季度的发票怎么冲销
  • 317房地产政策解读
  • 季度营业额超过6万需要补税
  • 个税累计预缴税额税率表是年还是月
  • 电子银行承兑汇票如何贴现
  • 职工福利费和教育费的计提比例
  • 税收完税证明是契证吗
  • 工商注册需要提供什么
  • 财产清查的会计分录
  • 小规模纳税人发生销售退回如何申报
  • 当月作废的发票是否需要报税
  • 残疾人就业保障金是什么意思啊
  • 收到员工水电费怎么做账
  • 增值税发票的作用
  • 电脑管家免费wifi
  • 销售免费样品账务处理
  • ocxdll.exe - ocxdll是什么进程 有什么用
  • windows 11 正式版实际使用体验如何?
  • android上传图片到服务器
  • 购入材料的实际成本
  • 班夫国家公园最佳旅游时间
  • PHP:finfo_buffer()的用法_fileinfo函数
  • 代境外汇款收的什么费用
  • ThinkPHP中Common/common.php文件常用函数功能分析
  • 公司购买食品属于什么费用
  • 安装cuda和cudnn
  • 库存现金每月终了由谁清点
  • 暂估少了冲销时怎么办
  • 减资如何弥补亏损
  • 分公司和总公司的账务处理
  • 增值税专票和普票的区别图片
  • 企业接受投资者投资,投资者超额缴入的资本
  • 数字黑洞有哪些
  • 用jdom创建中文的xml文件的方法
  • 房地产老项目简易计税方法
  • 小规模纳税人普票税率是多少
  • 明细分类账户的名称,核算内容及使用方法是什么规定的
  • 增值税期末有留抵税额应该怎么结转
  • 个人所得税不需要汇算清缴
  • 安置用房视同销售,怎么确认扣除费用?
  • 预提成本费用的会计分录
  • 个人如何购买定增的股票
  • 认证系统维护费可以全额抵扣吗
  • 减免税款属于政府补助利得吗
  • 港口建设费收费标准
  • 购买固定资产是应付账款还是其他应付款
  • server2008开机启动项设置
  • vmware img镜像
  • windowsxp还能正常使用吗
  • winxp怎样设置网络
  • win10无法回退到以前的版本怎么办
  • 侠客驱动是什么意思
  • linux mangle
  • js判断密码强弱
  • jsonp实现动态加载文件
  • 获取nodejs命令行信息
  • 获取linux命令执行结果
  • android的edittext在哪
  • 简易的python代码
  • shell脚本模拟ctrl
  • jquery设置禁用
  • 国家税务总局并入财政部最新消息
  • 朝阳区地方税务局电话
  • 佛山电动摩托车能上牌吗
  • 武汉洪山实验中学是初中还是高中
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设