Shell:如果属性不存在,则在 XML 元素中添加 属性
Shell: Adding property in XML element if the attribute is not present
我想编写一个 Chef Recipe 以在我的 XML 属性中添加一个 属性(如果属性不存在)并设置值(如果该属性存在)。
xml_file:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="false" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
如果 SSLEnabled 密钥不存在,我想为每个连接器标记添加一个新属性 SSLEnabled="true"
。如果该属性已经存在,则将值更新为 "true"。
我可以考虑使用 shell 命令(最好是 grep/sed/awk)吗??
如果不是,哪种资源适合此用例?
P.S: 我的连接器 XML 标签可以跨越多行或单行。
xmlstarlet ed --insert '//Connector[not(@SSLEnabled)]' \
--type attr --name 'SSLEnabled' --value "true" \
file.xml
要将输出保存到同一个文件中,请在 ed
子命令后添加 --inplace
选项。
我想编写一个 Chef Recipe 以在我的 XML 属性中添加一个 属性(如果属性不存在)并设置值(如果该属性存在)。
xml_file:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="false" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
如果 SSLEnabled 密钥不存在,我想为每个连接器标记添加一个新属性 SSLEnabled="true"
。如果该属性已经存在,则将值更新为 "true"。
我可以考虑使用 shell 命令(最好是 grep/sed/awk)吗??
如果不是,哪种资源适合此用例?
P.S: 我的连接器 XML 标签可以跨越多行或单行。
xmlstarlet ed --insert '//Connector[not(@SSLEnabled)]' \
--type attr --name 'SSLEnabled' --value "true" \
file.xml
要将输出保存到同一个文件中,请在 ed
子命令后添加 --inplace
选项。