0
私は次の問題について助けに感謝します。 (私はGroovyを初めて使用しているので、私の問題に取り組んでいる特定の例は見つかりません)。Groovy XmlSlurperはノードを与えられた子ノードの値で置き換えます
XmlSlurper
を使用して、特定の値を持つ子を持つXMLノードを置き換えようとしています。例えば、私が変換したい:へ
<assets>
<!--zero to many asset nodes beforehand-->
<asset>
<name>MyPackageName</name>
<data>
<stringValue>my string value</stringValue>
</data>
</asset>
<!--zero to many asset nodes afterwards-->
</assets>
:
<assets>
<!--zero to many asset nodes beforehand-->
<asset>
<name>MyPackageName</name>
<data/>
</asset>
<!--zero to many asset nodes afterwards-->
</assets>
私は名前mypackagenameのと私の資産を見つけるためにナビゲートし、コードのいずれかの例を見つけることができません。
私の失敗の試みは、次のとおりです。
def assets = new XmlSlurper().parseText(deviceXml)
assets.asset[name.text()=="MyPackageName"].replaceNode{
asset{
name("MyPackageName")
data()
}
}
私は「資産」のために不足しているプロパティのgroovy.lang.MissingPropertyException
例外はそれほど明確に私のノードを見つけるために、私の構文が間違って取得します。
申し訳ありませんが、多分私は持っています質問を正しく説明していない。私は、異なる名前のアセットノードをたくさん持っています。特定の名前を値MyPackageNameで検索し、データ値を空のノードに置き換え、残りのXMLをそのままにしておく必要があります。 – Gordon
@Gordon、私は答えを更新しました。 3番目のオプションは、あなたが探しているもののようです。 – Opal
それは素晴らしいです、ありがとう。 – Gordon