xmlstarlet

目录

1. 介绍

xml文件的查、改。

2. 功能

3. 用例

1. 介绍

2. 功能

3. 用例

3.1  xml文件1

xml1.xml

<?xml version="1.0"?>
< AAAA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="AAAA.xsd" version="1.2.0">
    <subsystem name="BBBB">
        <group name="CCCC">
            <record name="DDDD">
                <field name="EEEE" value="123"/>
                <field name="FFFF" value="ABC"/>
            </record>
        </group>
    </subsystem>
    <subsystem name="BBBB2">
        <group name="CCCC2">
            <record name="DDDD2">
                <num name="num" value="1"/>
                <field name="EEEE" value="1232"/>
                <field name="FFFF" value="ABC2"/>
            </record>
            <record name="DDDD2">
                <num name="num" value="2"/>
                <field name="EEEE" value="12323"/>
                <field name="FFFF" value="ABC23"/>
            </record>
        </group>
    </subsystem>
</AAAA >

 查

case1:获取123

xmlstarlet sel -t -m "/AAAA/subsystem[@name='BBBB']/group[@name='CCCC']/record[@name='DDDD']/field[@name='EEEE']" -v "string(@value)"  xml1.xml

case2:获取12323

xmlstarlet sel -t -m "/AAAA/subsystem[@name='BBBB2']/group[@name='CCCC2']/record[@name='DDDD2']/num[@name='num'][@value='2']../field[@name='EEEE']" -v "string(@value)"  xml1.xml

改:

case1:ABC->CBA

xmlstarlet ed --inplace -u         "/AAAA/subsystem[@name='BBBB']/group[@name='CCCC']/record[@name='DDDD']/field[@name='FFFF']/@value" -v "CBA"  xml1.xml

case2:ABC23->CBA23

xmlstarlet ed --inplace -u

"/AAAA/subsystem[@name='BBBB2']/group[@name='CCCC2']/record[@name='DDDD2']/num[@name='num'][@value='2']../field[@name='FFFF']" -v "CBA23"  xml1.xml

3.2 xml文件2

xml2.xml

<?xml version="1.0">
<AAAA>
    <BBBB>
        <CC>123</CC>
        <DD>abc</DD>
    </BBBB>
    <EEEE>
        <num>2</num>
        <FF>
           <num>1</num>
           <GG>123</GG> 
        </FF>    
        <FF>
           <num>2</num>
           <GG>1234</GG> 
        </FF>
    </EEEE>
</AAAA>

查:

case1:获取123

xmlstarlet sel -t -v "/AAAA/BBBB/CC" xml2.xml

case2:获取1234

xmlstarlet sel -t -v "/AAAA/EEEE/FF[num='2']/GG" xml2.xml

改:

case1:abc->cba

xmlstarlet ed --inplace -u "/AAAA/BBBB/DD" -v "cba" xml2.xml

case2:1234->4321

xmlstarlet ed --inplace -u "/AAAA/EEEE/FF[num='2']/GG" -v "4321" xml2.xml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值