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

标签 xml xml-namespaces xmlstarlet

我正在寻找这个问题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

最佳答案

您的文件使用 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/

相关文章:

ios - 如何在 Swift 中将文件写入位于 Apple 的文件应用程序中的文件夹

python - 在 sqlalchemy 中使用 postgresql xml 数据类型

php - 如何找出 PHP DOM 中元素的 namespace ?

android - 通过参数将 Spannable 应用于 string.xml 中的字符串

xml - 在 F# 中使用序列从对象中选择属性

PHP SOAP 请求,删除 ns1 : et ns:2 from request

java - XPath 表达式不为//元素返回任何内容,但//* 返回一个计数

Xmlstarlet 在更新 xml 时使用 --inplace 选项

linux - xpath html 合并列

xml - 使用XMLStarlet插入1000多个节点和属性-运行缓慢