通过命令行替换xml上的属性

问题描述 投票:0回答:1

我正在寻找此问题xmlstarlet update an attribute,并尝试替换Jboss配置文件中的属性。我在这里只是xml的一小部分:

<?xml version='1.0' encoding='UTF-8'?>

<server xmlns="urn:jboss:domain:10.0">
    <extensions>
        <extension module="org.jboss.as.clustering.infinispan"/>
    </extensions>
    <system-properties>
        <property name="hibernate.hbm2ddl.auto" value="validate"/>
    </system-properties>
</server>

我想替换的是hibernate.hbm2ddl.auto的值,从validateupdate

按照上一个答案,我尝试了此命令,但不要更新该值:

xmlstarlet edit   --update "//property[@name='hibernate.hbm2ddl.auto']/@value"   --value "update" conf.xml

我尝试遵循完整路径,但结果是相同的:没有更新。

xmlstarlet edit   --update "/server/system-properties/property[@name='hibernate.hbm2ddl.auto']/@value"   --value "update" conf.xml
xml xml-namespaces xmlstarlet
1个回答
0
投票

您的文件使用名称空间。

xmlstarlet edit --update '//*[local-name()="property"][@name="hibernate.hbm2ddl.auto"]/@value' -v "false" conf.xml

我用//*[local-name()="property"]绕过了file.soap中的所有名称空间

© www.soinside.com 2019 - 2024. All rights reserved.