尝试使用xmlstarlet向现有xml文件添加元素



我一直试图让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,因为我们要求添加元素

相关内容

  • 没有找到相关文章

最新更新