2014-12-04 1 views
0

나는 자식을 얻고, 부모를 얻고, 설정하고, 속성을 얻고, 삭제하도록 minidom API를 발견했다.Minidom Python에서 노드 이름을 변경하는 방법이 있습니까?

<TECH_COMPANIES> 
    <APPLE> 
     <IPHONE> 
      <IPHONE6>sameOld </IPHONE6> 
     </IPHONE> 
     <IPAD>nice</IPAD> 
     <MAC>awesome</MAC> 
    </APPLE> 

    <GOOGLE> 
     <GMAIL>BREEZE</GMAIL> 
     <PICASA>COOL_SHARE</PICASA> 
    </GOOGLE> 

    <LENOVO> </LENOVO> 

    <SAMSUNG> 
     <NOTE1> 
      <GORRILLA_GLASS ScratchProof="yes" Tranparency="99%" Smoothness="85%"/> 
     </NOTE1> 

    </SAMSUNG> 
</TECH_COMPANIES> 

APPLE, GOOGLE, LENOVO 삼성이 TECH_COMPANIES의 자식 요소 노드입니다 :

는 다음과 같은 XML을 고려하십시오. 요소 노드 'APPLE'의 이름을 'APPLEinc'로 변경하고 싶다면 어떻게 변경해야합니까?

답변

3

minidom은 표준 ish DOM API 구현을 제공합니다. W3C DOM API에는 요소의 이름을 바꿀 수있는 방법이 없습니다. 대신 요소를 다시 만들고 이전 요소에서 다시 채울 것으로 예상됩니다. 이것은 적어도 고통 스럽다. Element interface의 특성 방법을 사용하여 가로 질러 어떤 속성에서 Document.createElement()

  • 복사

    • 사용 : 그래서 절차를하는 것입니다.
    • Node interface을 사용하여 이전 노드의 모든 하위 노드를 새 노드에 추가합니다.

    DOM API를 사용하는 대신 ElementTree API으로 전환하는 것이 좋습니다. 이렇게하면 훨씬 더 파이썬적인 방식으로 나무를 조작 할 수 있습니다.

    from xml.etree import ElementTree as ET 
    
    root = ET.fromstring(xml_string) 
    apple = root.find('.//APPLE') 
    apple.tag = 'APPLEinc' 
    xml_string = ET.tostring(root) 
    
  • +0

    나는 어쨌든 이것을 듣고 싶지 않았습니다 ... !!! 그렇다면 ElementTree로 전환해야합니다 .... Martine –

    관련 문제