`
鬼辅神攻
  • 浏览: 20385 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用shell脚本读取xml的属性值和节点值

阅读更多
#FUNCRION: GetNodeValue
#DESC    : Get xmlnode value
#INPUT   : 1-XmlFilePath 2-NodeName    
#OUTPUT  : nodevalue
function GetNodeValue
{  
    if [ $# -ne 2 ];then
echo "    error: arguments is not enough"
echo "    USAGE:            $0 XmlFilePath NodeName"
        echo "    XmlFilePath       xmlfile path type[${HOME}/config/datasource/bmp-xa-ds.xml]"
        echo "    NodeName          nodename type[xa-datasource-property]"
echo     e.g.:  $0 ${HOME}/config/datasource/bmp-xa-ds.xml 'xa-datasource-property name="URL"'
return
fi

CurrentTime=`date +"%Y%m%d%H%M%S"`
tmpfile="$$_$CurrentTime"
FilePath=$1
    NodeName=$2
    NodePre=`awk -v Node="$NodeName" 'BEGIN {split(Node,NodeAdd," ");print NodeAdd[1]}'`
FLAG=0
    sed 's/>/>\n/g' $FilePath | sed 's/<\//\n<\//g' | sed 's/\s*\(.*\)\s*$/\1/g' | sed '/^\(\s\)*$/d' | while read line
    do
        ISFIRST=`echo $line | sed -n "/<$NodeName/p"`
        if [ "x$ISFIRST" != "x" ]; then
            FLAG=1
        fi
        if [ ${FLAG} -eq 1 ] ; then
            echo $line >> "$tmpfile"
        fi
        ISSEC=`echo $line | sed -n "/<\/$NodePre>/"p`
        if [ "x$ISSEC" != "x" ]; then
            FLAG=0
        fi
    done
    awk '{ORS=""}{print $0}' $tmpfile | awk 'BEGIN{FS=">";RS="</"}{print $NF}' | sed '/^\(\s\)*$/d'
    rm $tmpfile
}

#FUNCRION: GetNodeAttr
#DESC    : Get xmlnode attribute
#INPUT   : 1-XmlFilePath 2-AttrName    
#OUTPUT  : node attribute
function GetNodeAttr
{  
    if [ $# -ne 2 ];then
echo "    error: arguments is not enough"
echo "    USAGE:            $0 XmlFilePath AttrName"
        echo "    XmlFilePath       xmlfile path type[${HOME}/config/DiamBaseConfig.xml]"
        echo "    AttrName          nodename type[PeerIp]"
echo "    e.g.:  $0 ${HOME}/config/DiamBaseConfig.xml PeerIp"
return
fi

FilePath=$1
    AttrName=" $2="
sed 's/>/>\n/g' $FilePath | sed 's/<\//\n<\//g' | sed 's/\s*\.*\s*$/\1/g' | sed '/^\(\s\)*$/d' | sed -n "/$AttrName/"p | sed "s/.*$AttrName\"//g" | sed 's/\".*//g'
}
分享到:
评论

相关推荐

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

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

    Python Cookbook

    12.6 从XML DOM节点的子树中删除仅有空白符的文本节点 451 12.7 解析Microsoft Excel的XML 452 12.8 验证XML文档 454 12.9 过滤属于指定命名空间的元素和属性 455 12.10 用SAX合并连续的文本事件 458 12.11 ...

    1345个易语言模块

    API的使用方法.ec API 设置颜色对话框模块.ec ard.ec Arhz_自动更新.ec Base64编解码.ec BASE64编解码模块.ec Bios.ec Bios 信息.ec BMP加密数据.ec BMP滤镜模块.ec BOX.EC BPL专用更新模块.ec BPL综合模 块.ec BPL...

    dive into python

    8.7. 给属性值加引号 8.8. dialect.py 介绍 8.9. 全部放在一起 8.10. 小结 9. XML 处理 9.1. 概览 9.2. 包 9.3. XML 解析 9.4. Unicode 9.5. 搜索元素 9.6. 访问元素属性 9.7. Segue 10. 脚本和流 10.1. ...

    python cookbook(第3版)

    13.14 限制内存和CPU的使用量 13.15 启动一个WEB浏览器 第十四章:测试、调试和异常 14.1 测试输出到标准输出上 14.2 在单元测试中给对象打补丁 14.3 在单元测试中测试异常情况 14.4 将测试输出用日志记录到...

    vc++ 应用源码包_1

    实例使用了加载类似xml文件读取信息,然后显示。 COM_ATL_Tutorial 简单的atl控件演示 COM接口挂钩及其应用 如题。 CSkinSlier CSliderCtrl自绘 Cursor 生成图标,运行到鼠标图标。 cutscene win32下实现视频...

    vc++ 应用源码包_2

    实例使用了加载类似xml文件读取信息,然后显示。 COM_ATL_Tutorial 简单的atl控件演示 COM接口挂钩及其应用 如题。 CSkinSlier CSliderCtrl自绘 Cursor 生成图标,运行到鼠标图标。 cutscene win32下实现视频...

    vc++ 应用源码包_6

    实例使用了加载类似xml文件读取信息,然后显示。 COM_ATL_Tutorial 简单的atl控件演示 COM接口挂钩及其应用 如题。 CSkinSlier CSliderCtrl自绘 Cursor 生成图标,运行到鼠标图标。 cutscene win32下实现视频...

    vc++ 应用源码包_3

    实例使用了加载类似xml文件读取信息,然后显示。 COM_ATL_Tutorial 简单的atl控件演示 COM接口挂钩及其应用 如题。 CSkinSlier CSliderCtrl自绘 Cursor 生成图标,运行到鼠标图标。 cutscene win32下实现视频...

    vc++ 开发实例源码包

    实例使用了加载类似xml文件读取信息,然后显示。 COM_ATL_Tutorial 简单的atl控件演示 COM接口挂钩及其应用 如题。 CSkinSlier CSliderCtrl自绘 Cursor 生成图标,运行到鼠标图标。 cutscene win32下实现视频...

    vc++ 应用源码包_5

    实例使用了加载类似xml文件读取信息,然后显示。 COM_ATL_Tutorial 简单的atl控件演示 COM接口挂钩及其应用 如题。 CSkinSlier CSliderCtrl自绘 Cursor 生成图标,运行到鼠标图标。 cutscene win32下实现视频...

    易语言程序免安装版下载

    易语言5.1 相对于易语言5.0更新说明: ... 修改XML解析支持库,增加写出CDATA数据功能,解决解析XML时错误的丢弃换行和TAB字符的BUG,解决读取节点值时对CDATA数据进行转义处理的BUG。 20. 修改扩展界面支持库...

    1350多个精品易语言模块

    API的使用方法.ec API 设置颜色对话框模块.ec ard.ec Arhz_自动更新.ec Base64编解码.ec BASE64编解码模块.ec Bios.ec Bios 信息.ec BMP加密数据.ec BMP滤镜模块.ec BOX.EC BPL专用更新模块.ec BPL综合模 块.ec BPL...

    易语言 茶凉专用模块

    模块名称:茶凉专用模块 作者:茶凉 版本:2.0 本模块可以编程更简单...子程序 读内存长整数型, 长整数型, 公开, 从内存中读取长整数型数据,失败返回失败内容 .参数 进程ID, 整数型, , 进程ID .参数 地址, 整数型, , ...

Global site tag (gtag.js) - Google Analytics