저는 그루비에 새로워 도움을 요청합니다. name 속성을 기반으로 델타 XML 파일을 읽고 마스터 XML 파일을 업데이트하려고합니다. 두 XML 파일은 같은 구조입니다. 마스터 XML 파일의 특성 값을 업데이트하려고합니다. 그러나 마스터 파일은 한 번 비워져 파일이 업데이트됩니다. 내가 틀린 곳인지 모르겠습니다. 다음은 Groovy XmlParser로 업데이트하면 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" />
이 코드입니다 : : 아래
는 XML 구조
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{ [email protected]().equals(nameAttr)}.size()!=0)
{
bindings.each
{
def a=it.key
def v=it.value
baseItemDesNode.find{ [email protected]().equals(nameAttr)}[email protected]'a'="${v}" }
}
}
new XmlNodePrinter(new PrintWriter(outputFile)).print(basexmlConfig)
설명과 코드 Tim을 이용해 주셔서 감사합니다. 내 코드를 변경하고 테스트 할 것입니다. 윌 당신을 보자. 감사. – user1470220
@ user1470220 Cool. 손가락이 엇갈 렸습니다 :-) –
감사합니다 Tim. 코드 조각을 사용해 보았는데 완벽하게 작동합니다. 고마워. Groovy에 좋은 책을 제안 해 주시겠습니까? 나는 초보자이며 기초를 닦고 싶습니다. – user1470220