如何解决使用shell脚本读取属性文件并插入xml标记
我有一个如下的属性文件,
// config/services.php
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
use App\Util\Rot13Transformer;
use App\Util\TransformerInterface;
return function(ContainerConfigurator $configurator) {
$services = $configurator->services();
$services->set(Rot13Transformer::class);
// the ``App\Util\Rot13Transformer`` service will be injected when
// an ``App\Util\TransformerInterface`` type-hint is detected
$services->alias(TransformerInterface::class,Rot13Transformer::class);
};
我有一个如下的xml文件,
Name=sample
TagName=Test1
TagType=P
Name=sample1
TagName=Test2
TagType=Y
需要附加如下内容,
<?xml version="1.0" encoding="UTF-8"?>
<root>
</root>
任何人都可以帮助我在shell脚本中使用sed或awk命令在xml文件中插入...
预先感谢..
解决方法
使用bash
和xmlstarlet
。我在您的xml文件中的<?xml
前删除了空格。
#!/bin/bash
file="file.xml"
prop="property.txt"
while IFS="=" read -r key value; do
[[ "$key" == "Name" ]] && xmlstarlet edit -L --subnode '//root' --type elem -n "sub" "$file"
[[ "$key" == "TagName" ]] && xmlstarlet edit -L --subnode '//root/sub[last()]' --type elem -n "TagName" --value "$value" "$file"
[[ "$key" == "TagType" ]] && xmlstarlet edit -L --subnode '//root/sub[last()]' --type elem -n "TagType" --value "$value" "$file"
done < "$prop"
输出到file.xml:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<sub>
<TagName>Test1</TagName>
<TagType>P</TagType>
</sub>
<sub>
<TagName>Test2</TagName>
<TagType>Y</TagType>
</sub>
</root>
请参阅:xmlstarlet edit
,以获取语法概述。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。