私はgroovyにまったく慣れていないので、あなたの助けを求めています. デルタ xml ファイルを読み取り、名前属性に基づいてマスター xml ファイルを更新したいと考えています。両方の xml ファイルは同じ構造です。マスター xml ファイルの属性値を更新しようとしています。ただし、マスター ファイルが一度空白になると、ファイルが更新されます。どこが間違っているのかわかりません。
以下は、xml 構造です。
<item-descriptor name="user" cache-mode="simple" item-cache-size="3000" query-cache-size="1000" item-cache-timeout="900000" query-expire-timeout="60000" />
<item-descriptor name="contactInfo" cache-mode="simple" item-cache-size="10000" query-cache-size="1000" item-cache-timeout="900000" query-expire-timeout="60000" />
以下は、このためのコードです。
def templatexmlConfig = new XmlParser().parse(templateConfigFile)
def basexmlConfig = new XmlSlurper().parse(baseConfigFile)
def templateItemDesNode = templatexmlConfig.'item-descriptor'
def baseItemDesNode=basexmlConfig.'item-descriptor'
templateItemDesNode.each()
{
Map bindings=[:]
def nameAttr=it.attribute('name')
it.attributes().each{attrName,attrValue->
if(!attrName.equals('name'))
{
bindings.put(attrName,attrValue)
}}
if(baseItemDesNode.find{ it.@name.text().equals(nameAttr)}.size()!=0)
{
bindings.each
{
def a=it.key
def v=it.value
baseItemDesNode.find{ it.@name.text().equals(nameAttr)}.@'a'="${v}" }
}
}
new XmlNodePrinter(new PrintWriter(outputFile)).print(basexmlConfig)