2011-06-13 1 views
1

Python을 사용하여 일부 데이터로 XML 파일을 만드는 작업. 목록에서 데이터를 사전에 값을 설정하려고합니다. 나는 여러 줄을 만들 것입니다. 그래서 이것이 제가이 값을 참조하는 이유입니다. 고마워. 도움을.set() 메소드가 Python 용 xml.etree 라이브러리에 없습니까?

from xml.etree import ElementTree as ET 

root = ET.Element("painter") 
root.set('version', '1.0') 
linenum = 0 
pointnum = 0 

smpl_data = [[[20,40],(0,0,1,1)],[[10,50],(0,0,1,1)],[[78,89],(0,0,1,1)]] 

while linenum <= len(smpl_data): #smpl_data change to self.lines 
    elem_line = ET.SubElement(root,"line" + str(linenum), attrib={"r": "1", "g": "2", "b": "3", "a": "4"}) 
    print elem_line 
    print elem_line.attrib.get("r")      
    print elem_line.attrib.set("r", "smpl_data[linenum][2]") 
    # I get an attribute error: 'dict' object has no attribute 'set' 

그것은 분명하지만 문서에 표시됩니다이 ...

http://docs.python.org/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element.set

감사 : 여기 내 코드입니다.

답변

1

구성원의 Element에서 get()set()을 호출 중입니다. attribset() 함수가없는 일반적인 오래된 파이썬 사전입니다. 연결된 문서는 Element 개체 자체의 set() 함수에 대한 것입니다.

당신이 사용하는 것이 attrib 멤버에 값을 설정하려면 다음

elem_line.attrib['r'] = smpl_data[linenum][2] 

대신 Element를 사용하려면 :

elem_line.get('r') 
elem_line.set('r', smpl_data[linenum][2]) 
+0

덕분에이 톤 도움이! 나는 값 "r"에 접근하기 위해 smpl_data [linenum] [1] [0]을 할 필요가 있음을 깨달았지만 elem_line.get ("r"), 그리고 elem_line.set ("r", smpl_data ...)는 훌륭하게 작동한다. – Joe