Xml
使用 xmlstarlet 更新 XML 值
我有文件 config.xml:
<?xml version="1.0" encoding="utf-8"?> <widget xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" id="app" version="2.5" android-versionCode="20500"> <name>App title</name> <description>Dummy dummy text.</description> </widget>
我想改變元素的值。
我試過以下:
xmlstarlet edit -L -u "/_:widget/name" -v "NEW_NAME" config.xml
和
xmlstarlet edit -L -u "//name" -v "NEW_NAME" config.xml
但它並沒有改變“應用程序標題”的值。
您需要指定命名空間,因為
name
元素位於http://www.w3.org/ns/widgets
命名空間中:xmlstarlet edit -L -N w=http://www.w3.org/ns/widgets -u "//w:name" -v "NEW_NAME" config.xml
此命令工作正常,但會更改 xml 文件中的每個條目。(所有帶名稱的欄位)
如果有多個具有相同名稱的欄位,應輸入什麼。我試過了:
xml ed -L -N w=http://artifactory.jfrog.org/xsd/1.7.9 -u "//w:mailServer/port" -v "123" artifactory.config.import.xml
但什麼也沒發生。然而,該命令被接受。
當我使用
xml ed -L -N w=http://artifactory.jfrog.org/xsd/1.7.9 -u "//w:port" -v "999" artifactory.config.import.xml
每個名稱為 port 的項目都被更改為值 999。