`

shell 解析xml

阅读更多
有一个文本文件。如下:
<?xml version="1.0" encoding="UTF-8" ?>
<result>
<lrc id="189296" artist="陶晶莹" title="太委屈"></lrc>
<lrc id="1243" artist="xxx" title="vvv"></lrc>
</result>

如何查出中间两行,并给值到一个数组里 id[],artist[]和title[]里?
最后要列出来。并在以后使用这些变量。
本人实在很菜啊。目前只摸索出 cat a.xml | grep '</lrc>'
-_-! ...........差很远啊

solution 1:
#!/bin/bash

declare -a ids
declare -a artists
declare -a titles
tmp=`sed -n -e 's/<lrc //' -e 's/><\/lrc>//p' $1 | sed -e 's/id="//' -e 's/artist="//' -e 's/title="//' -e 's/"//g'`

lrc=($(echo $tmp))
for((i=0, j=0; i<${#lrc
  • }; i++, j++))
  • do
       #echo "${lrc[i]}--${lrc[++i]}--${lrc[++i]}"
       ids[j]=${lrc[i]}
       artists[j]=${lrc[++i]}
       titles[j]=${lrc[++i]}
    done

    for((k=0; k<${#ids
  • }; k++))
  • do
       echo "id: ${ids[k]}--artist: ${artists[k]}--title: ${titles[k]}"
    done

    将以上代码保存为xmlparser.sh
    代码:
    <?xml version="1.0" encoding="UTF-8" ?>
    <result>
    <lrc id="189296" artist="陶晶莹" title="太委屈"></lrc>
    <lrc id="1243" artist="xxx" title="vvv"></lrc>
    </result>

    将以上代码保存为test.xml
    然后在终端执行
    引用:
    ./xmlparser.sh test.xml

    结果如下:
    引用:
    ranfow@ranfow-laptop:~/codes/sh$ ./xmlparser.sh test.xml
    id: 189296--artist: 陶晶莹--title: 太委屈
    id: 1243--artist: xxx--title: vvv


    solution 2:
    cat a.xml | grep '</lrc>'|sed "s/<lrc //;s/><\/lrc>//;s/id=/id[NUM]=/;s/artist=/artist[NUM]=/;s/title=/title[NUM]=/;s/\"\ /\";/g"|while read line;do
        echo "${line//NUM/${i:-0}}"
        ((i++))
    done >/tmp/source
    . /tmp/source
    rm /tmp/source
    for((j=0; j<${#id[@]}; j++));do
       echo -e "id[$j]: ${id[j]}\nartist[$j]: ${artist[j]}\ntitle[$j]: ${title[j]}"
    done


    不过有临时文件不爽。。。。

    solution 3:
    cat a.xml | grep '</lrc>'|sed "s/<lrc //;s/><\/lrc>//;s/=/[NUM]=/g;s/\"\ /\";/g"|while read line;do
        echo "${line//NUM/${i:-0}}"
        ((i++))
    done >/tmp/source
    . /tmp/source
    rm /tmp/source
    for((j=0; j<${#id[@]}; j++));do
       echo -e "id[$j]: ${id[j]}\nartist[$j]: ${artist[j]}\ntitle[$j]: ${title[j]}"
    done
    分享到:
    评论

    相关推荐

      利用Shell解析处理XML的方法汇总

      主要给大家总结介绍了关于利用Shell解析处理XML的方法,分别介绍了关于xmlint、xpath和xml2三种工具的使用,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。

      shell解析json源码

      shell 通过正则、换行、替换等原生态命令 实现 万能解析 json xml sql语句和一切有规则的文本。 在shll里面设置数组来实现自定义提取所需字段 主要是正则的运用,比如:arr[$ar]=$(echo $L | sed 's/\(.*\)"'"$ar"'...

      XML解析示例项目-读取并输出xml的指定内容示例

      这是一个使用TinyXML进行xml文件解析的测试项目,测试了对xml文件中指定内容的读取功能。该项目演示了TinyXML的引入与使用,适合于首次接触xml解析的初学者。(这是自己第一次接触xml解析,所以仅涉及几个基本函数的...

      java解析读取excel,word,txt,xml,json等jar包

      支持excel2003,2007的解析读取,可指定sheet页读取,指定行开始读取,过滤空行,指定列读取,过滤空单元格,支持json文件的解析读取,支持word文件的解析读取,txt文件等等,需要API文档可私信本人

      解析器:用纯POSIX shellscript编写的CSV,JSON,XML文本解析器和生成器

      解析器:用纯POSIX shellscript编写的CSV,JSON,XML文本解析器和生成器

      nmap_magic:将 nmap XML 输出的命令行处理为更可用的 tsv 格式文件

      nmap-magic 将 nmap XML 输出的命令行处理为更可用的 tsv 格式文件。

      XML-Shell-开源

      使用“ expat”库的命令行XML解析器允许您即时提取/添加/修改/删除/拆分/格式化/取消格式化/计数标签的值,名称和属性。 对于在基于UNIX或Linux的系统上的Shell脚本很有用。

      SyntacticParsing:使用斯坦福解析器进行句法解析

      句法分析这个项目对于使用斯坦福解析器从句子生成句法解析树非常有用。 可以将解析器作为套接字服务器运行可以通过... 配置 XML 文件保存在“resources/english_stanford_parser.xml” 您可以使用此项目提供的 shell-sc

      sample-pr-parsing:从一致性PR解析junit xml的探索

      样本PR解析 问题 我们想将conformance.yaml中可用的所有测试与公司运行的测试进行比较,以检查其是否符合要求,以查看是否所有的一致性测试均由它们运行。 该公司将使用sonobuoy来验证符合性。 结果,Sonobuoy将...

      bssdtk:Bash Shell 软件开发工具包

      然而,像 XML 解析这样的东西太慢了,我不知道我是否能完成这些部分。 初始构建测试是在 Mac OS Lion 和 openSuSE 12.1 上完成的。 但是,目前的测试仅在 Mac OS X Yosemite、openSuSE 和 CentOS 上进行

      Python Selenium 获取动态网页指定元素的超链接.pdf

      Lxml是XML和HTML的解析器,其主要功能是解析和提取XML和HTML中的数据;lxml和正则一样,也是用C语言实现的,是一款高性能的python HTML、XML解析器,也可以利用XPath语法,来定位特定的元素及节点信息。 XPath 是...

      Spring Data集成MyBatis完整源码解析

      共计296个文件,主要包括200个Java源码文件,以及39个VM模板、19个XML配置、7个SQL脚本、4个Markdown文档、2个属性文件、2个Shell脚本、2个工厂配置文件和2个Processor文件及2个Mustache模板。该模块特别强化了对...

      Spark ML驱动的机器学习平台源码解析

      项目概述:此项目是一款基于Java语言,融合JavaScript、Scala、Shell等多种技术构建的机器学习平台。该平台以Apache Spark ML库为核心,实现了从数据预处理、特征工程、模型训练到服务定时调度及发布的全流程功能。...

      基于Python的编程学习设计源码

      这些文件详细展示了如何使用Python、Shell、HTML、JavaScript、C和C++进行编程学习,包括Excel读写追加处理,XML和JSON解析,FLV与MP4转换,PyQT界面应用程序开发,https证书到期检测,糗百爬虫,pdf和图片互相转换...

      ebay-project:用于获取和分析 ebay 商品的脚本

      eBay-项目###api 脚本获取ebay数据的脚本从 xml 响应中提取标题的示例 Shell 命令 sed -e "s/xmlns/ignore/" WomensAccessoriesResponse/WomensAccessoriesResponse1.xml | xmllint --xpath "/...- ###ExtractedXMLData...

      gnome-shell-extension-syncthing

      它显示一个带有以下功能的小符号Syncthing图标~/.config/syncthing/config.xml自动文件解析,以获取配置IP和端口Syncthing的状态摘要指示( idle / syncing / error / unknown ) 用于启动/停止同步的on / off开关...

      apache-commons源码及jar文件

      Commons-Digester 是一个 XML-Java对象的映射工具,用于解析 XML配置文件. Discovery Commons-Discovery 提供工具来定位资源 (包括类) ,通过使用各种模式来映射服务/引用名称和资源名称。. EL Commons-EL 提供在...

      Python概述(1).pdf

      Python 概述 Python 用途: Python 对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具 和部件(有时也被称为 Shell 工具)的理想工具。Python 程序可以搜索文件和目录树,可 以运行其他程序,...

    Global site tag (gtag.js) - Google Analytics