目录
xml文件的查、改。
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