2012-10-16 2 views
0

아래 XML 파일이 있습니다. 내 장치에서 데이터를 읽고 파이썬 스크립트를 사용하여 "value"열에 데이터를 쓰고 싶습니다.속성을 기반으로 xml 값을 읽고 쓰십시오.

<TopoDefs> 
    <Device Name="SNB" LogicalType="CORE" 
      IdCode="0x03886A21" Mask="0xf0000000"> 
    <Variable name="A0" value="0x52001321" type="GREEN" /> 
    <Variable name="A1" value="0x51001321" type="GREEN" /> 
    <Variable name="A2" value="0x03001321" type="GREEN" /> 
    <Variable name="A3" value="0x14001321" type="GREEN" /> 
    <Variable name="B0" value="0x5A001321" type="BLUE" /> 
    <Variable name="B1" value="0x51001321" type="BLUE" /> 
    <Variable name="B2" value="0x04001321" type="BLUE" /> 
    <Variable name="B3" value="0x05001321" type="BLUE" /> 
    </Device> 
</TopoDefs> 

저는 완전히 파이썬 스크립팅의 새로운 학습자입니다. XML 파일을 구문 분석하고 항상 변경 될 새로운 값으로 대체 될 속성 값을 가리키는 방법은 무엇입니까? getElementsByTagName과 nodevalue를 사용하면 노드의 모든 문자열을 읽을 수 있습니다. 값을 읽음으로써 어떻게 제한하고 다른 변수는 그대로 유지합니까?

답변

0

여기 예제가 그 문서의 모든 장치에 걸쳐 반복하고, 장치에있는 모든 변수 :

xmlstr = """<TopoDefs> 
    <Device Name="SNB" LogicalType="CORE" 
      IdCode="0x03886A21" Mask="0xf0000000"> 
    <Variable name="A0" value="0x52001321" type="GREEN" /> 
    <Variable name="A1" value="0x51001321" type="GREEN" /> 
    <Variable name="A2" value="0x03001321" type="GREEN" /> 
    <Variable name="A3" value="0x14001321" type="GREEN" /> 
    <Variable name="B0" value="0x5A001321" type="BLUE" /> 
    <Variable name="B1" value="0x51001321" type="BLUE" /> 
    <Variable name="B2" value="0x04001321" type="BLUE" /> 
    <Variable name="B3" value="0x05001321" type="BLUE" /> 
    </Device> 
</TopoDefs>""" 

import xml.etree.ElementTree as ET 
document = ET.fromstring(xmlstr) 

for dev in document.iter('Device'): 
    for var in dev.iter('Variable'): 
     var.set('value', 'new_value') 

print ET.tostring(document) 
관련 문제