我正在寻找这个问题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
的值从 validate
到 update
根据之前的答案,我尝试了此命令,但不更新值:
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
最佳答案
您的文件使用 namespaces (xmlns="urn:jboss:domain:10.0"
)。
xmlstarlet edit --update '//*[local-name()="property"][@name="hibernate.hbm2ddl.auto"]/@value' -v "update" conf.xml
我使用//*[local-name()="property"]
绕过conf.xml中的所有命名空间
关于xml - 通过命令行替换 xml 上的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61539976/