我一直试图让xmlstarlet添加<security-enabled>false</security-enabled>
到"/configuration/core"。命令运行没有错误,但现在对文件进行了更改。
XML文件:
<configuration xmlns="urn:activemq" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:activemq /schema/artemis-configuration.xsd">
<jms xmlns="urn:activemq:jms">
<queue name="DLQ"/>
<queue name="ExpiryQueue"/>
</jms>
<core xmlns="urn:activemq:core">
<!-- this could be ASYNCIO or NIO
-->
<journal-type>ASYNCIO</journal-type>
<paging-directory>./data/paging</paging-directory>
<bindings-directory>./data/bindings</bindings-directory>
<journal-directory>./data/journal</journal-directory>
<large-messages-directory>./data/large-messages</large-messages-directory>
<journal-min-files>10</journal-min-files>
...
</core>
</configuration>
我运行过的命令之一:
xmlstarlet ed -i "/configuration/core" -t attr -n "security-enabled" -v "false" broker.xml
我还使用了xmlstarlet ed -L…就地编辑,但当我注意到编辑没有发生时,我放弃了-L用于STDOUT。
您需要正确指定xml命名空间。在你的例子中:
xmlstarlet ed -L -N a="urn:activemq" -N c="urn:activemq:core" -s "/a:configuration/c:core" -t elem -n "security-enabled" -v "false" broker.xml
而且我改变了:
-
-t attr
到-t elem
,因为我们需要元素而不是属性 -
-i
到-s
,因为我们要求添加子元素