`
鬼辅神攻
  • 浏览: 20804 次
  • 性别: 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的方法汇总

    在IT领域,尤其是在系统管理和自动化任务中,Shell脚本经常被用来处理各种任务,包括解析和操作XML数据。XML作为一种结构化的数据交换格式,广泛应用于配置文件、数据传输和存储等场景。本文将详细介绍如何利用Shell...

    Mac下apk渠道检测工具

    - 如果遇到问题,可以通过添加日志输出或使用`echo`命令在shell脚本中打印中间结果,帮助定位和解决问题。 通过以上步骤,你就能够在Mac环境下构建一个基本的apk渠道检测工具,实现对apk文件的自动解压和渠道号的...

    Ant项目所需要用到的jar以及build.xml

    Ant使用XML语法来定义任务和属性,使得构建过程可以跨平台进行。Ant不仅适用于Java项目,也可以处理其他类型的项目,因为它可以执行各种操作系统命令。 2. **jar文件**:`.jar`是Java Archive的缩写,它是Java平台...

    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 ...

    安卓env读取

    3. **持久化环境变量**:要使环境变量在设备重启后依然有效,通常需要修改系统的启动脚本,如 `/system/etc/init/*.rc` 文件,或者在应用的 `AndroidManifest.xml` 中使用 `android:environmentVariables` 属性...

    adt_auto_version

    `make_ver_name.sh`则是Linux或Mac OS中的Shell脚本,功能类似,为这些平台提供了同样的便利。 `ver.bat`的工作流程可能是这样的:首先,它会查找当前的`versionName`,然后根据预设的规则(如增量或者按照特定格式...

    Ant学习笔记

    此外,还可以使用`if`和`unless`属性控制目标是否执行,它们基于预先定义的属性值。 `&lt;property&gt;`元素用于定义和管理属性,属性可以是字符串值,也可以通过读取外部的属性文件(`build.properties`)来设定。属性值在...

    JAKARTA COMMONS

    2. **Commons BeanUtils**: 这个库是对 Java 反射和 introspection API 的封装,简化了对 Java 对象属性的操作,如设置和获取属性值,以及进行深度复制等。 3. **Commons Betwixt**: 用于将 JavaBean 映射到 XML ...

    深入浅出 Greasemonkey优化

    使用正则表达式匹配不区分大小写的属性值: ```javascript const elements = document.querySelectorAll('[class*="MyClass"]'); ``` ##### 4.18 获取当前域名 使用`location.hostname`获取当前页面的域名: ```...

    Appium高级进阶

    - **元素属性获取**: 通过发送HTTP请求到Appium服务器获取指定元素的属性值,例如获取某个元素的文本内容。 #### 四、实战案例 在实际项目中,结合以上理论知识,我们可以编写出高效稳定的自动化测试脚本。例如,在...

    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. ...

    virtualbox5.0.10sdk.pdf

    - **Visual Basic 和 VBS 在 Windows 主机上**:可以使用 Visual Basic 或 VBS 来编写脚本来控制 VirtualBox。 - **C 语言绑定到 VirtualBox API**:对于不支持 COM/XPCOM 的平台,可以使用 C 语言来编写应用程序...

    android高手进阶教程 完整版 pdf

    **设置属性**:可以通过XML文件定义自定义属性,并在Java代码中获取这些属性值。 #### 四、Android中自定义属性(attr.xml, TypedArray)的使用 - **自定义属性**: - 可以通过定义自定义属性来扩展Android UI控件...

    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...

    SSI技术整合

    该属性可以确保SSIServlet能够正确地读取和写入文件系统。 #### 四、使用SSI技术的优势 1. **简化开发**:通过SSI技术可以在单个页面中包含多个文件,从而减少重复代码,提高代码复用率。 2. **增强灵活性**:...

    Hadoop面试100题.pdf

    这个值可以根据实际情况调整,以平衡内存使用和磁盘I/O操作的频率。 12. **fs.mapr.working.dir只是单一的目录** - **知识点说明**:`fs.mapr.working.dir` 是一个配置参数,用于指定MapReduce作业的临时工作目录...

    DB2手册pdf

    DB2支持多种与其他系统的交互方式,包括通过ODBC、JDBC等驱动程序进行连接,以及通过XML和JSON格式的数据交换。 ### DB2表及SP管理 #### 权限管理 DB2中的权限管理包括数据库权限、schema权限、tablespace权限、...

    大数据人工智能量化投资平台.pdf

    - Shell脚本是用于自动化任务的脚本文件。 - 可以使用bash、sh等Shell编写。 #### 四、负载均衡与分布式存储 - **LVS负载均衡** - LVS是一种基于Linux内核的负载均衡解决方案。 - 支持多种负载均衡算法。 - **...

Global site tag (gtag.js) - Google Analytics