2017-12-06 12 views
0

저는 Python 프로그래밍을 처음 사용합니다. 하나의 스 니펫이 아래에있는 XML 파일이 있습니다.파이썬을 사용하여 xml 파일에 새 하위 요소 노드를 도입하는 방법

<relationship name="a_to_b"> 
    <containment> 
    <parent> 
     <hasClass name="a" /> 
    </parent> 
    <child> 
     <hasClass name="b" /> 
    </child> 
    </containment> 
</relationship> 

이제이 섹션을 아래 내용으로 업데이트해야합니다.

<relationship name="a_to_b"> 
    <containment> 
    <parent> 
     <hasClass name="a"> 
     <mimName>top</mimName> 
     </hasClass> 
    </parent> 
    <child> 
     <hasClass name="b"> 
     <mimName>top</mimName> 
     </hasClass> 
    </child> 
    </containment> 
</relationship> 

저는 ElmentTree 모듈을 사용하고 있습니다. 어떻게해야합니까? Python 버전 2.6.

아래 코드를 사용하고 있습니다.

tree = ET.ElementTree(file=xml) ; 
root=tree.getroot() ; 
print("Root tag of xml : "+root.tag) ; 
#child_of_root=root; 
#print("Root tag attribute of xml : "+root.attrib) ; 



def fun(root): 
    #if root.tag is not 'relationship': 
     for child_of_root in root : 
      #print("Tag : "+child_of_root.tag) ; 
      attribut=child_of_root.attrib ; 
      #print "Value : %s" % attribut.get('name') 
      if (child_of_root.tag == 'hasClass' and attribut.get('name') == 'MeContext') or (child_of_root.tag == 'hasClass' and attribut.get('name') == 'ManagedElement') : 
      print(child_of_root.tag,attribut.get('name')) ; 
      new_data = ET.SubElement(child_of_root, 'mimName'); 
      new_data.text = 'Top' 
     fun(child_of_root) 

fun(root); 
+0

아무도 도와 줄 수 있습니까? – Abinash

+0

Python 2.6을 사용하는 경우 질문에 "python-3.x"및 "python-2.7"이라는 태그가 붙는 이유는 무엇입니까? – mzjn

답변

0

xml.etree.ElementTree.SubElement을 사용하면 다른 태그 내에 태그를 추가 할 수 있습니다. Python.org에서 복사 ->

>>> a = ET.Element('a') 
>>> b = ET.SubElement(a, 'b') 
>>> c = ET.SubElement(a, 'c') 
>>> d = ET.SubElement(c, 'd') 
>>> ET.dump(a) 
<a><b /><c><d /></c></a> 
+0

"new_data = ET.SubElement (child_of_root, 'mimName');"을 변경해야합니까? "new_data = xml.etree.ElementTree.SubElement (child_of_root, 'mimName');"와 일치하는 행 . 위의 작업을 수행했지만 파일을 "./test.py", 재미있는 26 번째 줄. new_data = xml.etree.ElementTree.SubElement (child_of_root, 'mimName'); AttributeError : 'str'객체에 'etree'속성이 없습니다. 오류가 발생했습니다. – Abinash

+0

시간이 없습니다. 내가 말할 수있는 것은 qoutes를 사용할 때마다 유형이 문자열이라는 것입니다. 그러나 당신은 코드 어딘가에 태그로 복용하고 있습니다. 그것을 변경하십시오. 태그에 'ET'만을 사용하고 간단한 문자열이 아닌지 확인하십시오. –