だからXMLファイルがあります
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>platform</artifactId>
<groupId>com.test.aem</groupId>
<version>6.1.1-SNAPSHOT</version>
</parent>
version
値を新しい値に更新したいです。
<version>6.5.0-SNAPSHOT</version>
<parent>
しかし、このセクションでのみ更新され、ファイルの他の場所では更新されないようにしたいと思います。バッシュは使えますか?
xmlstarlet
残念ながら容器に含まれていないため使用できません。
ベストアンサー1
XMLフラグメントの形式が正しくないという事実(</project>
末尾の要素の終わりを見逃した)を除いて、正しい答えは、XMLパーサーを使用してXMLを解析して編集する必要があることです。
xmlstarlet edit --update '/_:project/_:parent/_:version' --value '6.5.0-SNAPSHOT' pom.xml
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>platform</artifactId>
<groupId>com.test.aem</groupId>
<version>6.5.0-SNAPSHOT</version>
</parent>
</project>
_:
別の名前空間()にあるため、各要素名の接頭辞は必須のワイルドカードですxmlns=...
。
もちろん、出力を一時ファイルに書き込み、元のファイルを結果に置き換えることもできます。または、xmlstarlet edit --inplace
編集した内容が有効であると確信している場合は、この方法を使用できます。