Add/Remove/update 两个 xml 文件之间的条目,使用 Ant xml 任务或使用 perl 脚本
Add/Remove/update entry between two xml file either using Ant xmltask or using perl scripting
这是第一个 xml 文件 input.xml,
input.xml:
<Mapping>
<Common>
<Apps>
<App ID = "id1">
<config key = "Format" value = "PDF"/>
</App>
<App ID = "id2">
<config key = "Logging" value = "no"/>
<config key = "ExtraLogging" value = "no"/>
</App>
</Apps>
<All>
<config key="log1" value="N"/>
</All>
</Common>
</Mapping>
需要从 input.xml 和 Add/Remove/update 中的相应条目读取 output.xml。
output.xml:
<Mapping>
<Common>
<Apps>
<App ID = "id1">
<config key = "Format" value = "DOC"/>
</App>
<App ID = "id2">
<config key = "Logging" value = "yes"/>
</App>
</Apps>
<All>
<config key="log1" value="N"/>
</All>
</Common>
</Mapping>
使用xmlstarlet
你会写
xmlstarlet ed \
-u '//App[@ID="id1"]/config[@key="Format"]/@value' -v "DOC" \
-u '//App[@ID="id2"]/config[@key="Logging"]/@value' -v "yes" \
-d '//App[@ID="id2"]/config[@key="ExtraLogging"]' \
input.xml > output.xml
这是第一个 xml 文件 input.xml,
input.xml:
<Mapping>
<Common>
<Apps>
<App ID = "id1">
<config key = "Format" value = "PDF"/>
</App>
<App ID = "id2">
<config key = "Logging" value = "no"/>
<config key = "ExtraLogging" value = "no"/>
</App>
</Apps>
<All>
<config key="log1" value="N"/>
</All>
</Common>
</Mapping>
需要从 input.xml 和 Add/Remove/update 中的相应条目读取 output.xml。
output.xml:
<Mapping>
<Common>
<Apps>
<App ID = "id1">
<config key = "Format" value = "DOC"/>
</App>
<App ID = "id2">
<config key = "Logging" value = "yes"/>
</App>
</Apps>
<All>
<config key="log1" value="N"/>
</All>
</Common>
</Mapping>
使用xmlstarlet
你会写
xmlstarlet ed \
-u '//App[@ID="id1"]/config[@key="Format"]/@value' -v "DOC" \
-u '//App[@ID="id2"]/config[@key="Logging"]/@value' -v "yes" \
-d '//App[@ID="id2"]/config[@key="ExtraLogging"]' \
input.xml > output.xml