1
에서 XML에 자식 요소를 추가 I는 XML 파일의 요소가 : 나는 두 자식 요소를 추가 할 필요가파이썬
<condition>
<comparison compare="and">
<operand idref="XXX" type="boolean" />
</comparison>
</condition>
(자식 1과 자식 2)과 같은 :
<condition>
<child1 compare='and'>
<child2 idref='False' type='int' />
<comparison compare="and">
<operand idref="XXX" type="boolean" />
</comparison>
</child1>
</condition>
나는 lxml을 사용하여 진행했다 :
from lxml import etree
tree = etree.parse(xml_file)
condition_elem = tree.find("<path for the condition block in the xml>")
etree.SubElement(condition_elem, 'child1')
tree.write('newXML.xml', encoding='utf-8', xml_declaration=True)
이것은 아래의 요소 조건의 자식으로 child1 요소를 추가하고 나의 요구 사항을 만족시키지 못했다. t :
<condition>
<child1></child1>
<comparison compare="and">
<operand idref="XXX" type="boolean" />
</comparison>
</condition>
아이디어가 있으십니까? 감사는 etree 서브 모듈은, 내가 그에게로 다시에 자식 1 요소와 재료의 비교를 추가, 루트에서 비교 요소를 잘라 것입니다 이상 LXML의 객관화 서브 모듈 사용
objectify는 그 (것)들에 관하여 약간 우습다 때문에, 태그 이름에 관하여 1 개의 단어. child1 및 child2 요소를 만들면 태그 이름, 즉 인용 된 "child1"/ "child2"를 결정하는 첫 번째 인수가됩니다. 명확성을 위해 나는 파이썬 변수에 대해서 같은 이름을 사용하고있다. 그러나 'condition'요소에 해당 요소를 추가하면 해당 태그 이름이 속성의 태그 이름으로 변경됩니다. "condition.evil_spawn = child1"을 사용했다면 조건의 자식 태그 이름은 자식이 아니라 "evil_spawn"이됩니다. 여기서 'child1'을 계속 사용하기 때문에 아무 것도 변경되지 않습니다. – brokkr
동일한 레벨에 여러 개의 요소가있는 경우 어떻게해야합니까? –
Bhaskar
'comparison = condition.comparison'은 태그 이름이 'comparison'인 첫 번째 요소를 대상으로합니다. 'comparison' 엘리먼트의리스트를 얻으려면'condition.comparison [:]'을 사용하십시오. – brokkr