2013-04-17 4 views
1

다음과 같은 XML 파일이 있습니다.XML을 cfg 파일로 변환

<settings> 
    <setting id="auto_backup" value="false" /> 
    <setting id="exitonbackspace" value="true" /> 
    <setting id="hidemousepointer" value="true" /> 
    <setting id="nb_backup_files" value="10" /> 
    <setting id="refreshonload" value="true" /> 
    <setting id="screen2" value="false" /> 
    <setting id="show_batch" value="true" /> 
    <setting id="show_log" value="true" /> 
</settings> 

정보를 cfg 파일로 추출하는 XML에 python 스크립트를 실행하고 싶습니다. 이렇게 보일 것입니다.

auto_backup=false 
exitonbackspace=true 
nb_backupfiles=10 
refreshonload=true 
screen2=false 
show_batch=true 
show_log 

어떻게하면됩니까?

+1

당신은 무엇을 시도 : 당신이 할 수 있도록이 script.py의 가정, 출력 표준 입력에서 변환? lxml과 같은 것으로 파싱하고 거기에서 꽤 간단합니다. – JosefAssad

답변

1
#!/usr/bin/env python2.7 

import sys, lxml.etree 

tree = lxml.etree.parse(sys.stdin) 

for el in tree.findall('setting'): 
    print el.attrib['id'], '=', el.attrib['value'] 

이런 식으로.

cat settings.xml | ./script.py >> settings.cfg 
+0

나는 그것을 실행할 수 있도록 자기 포함되어야한다. 'foo = open ('settings.cfg', 'w')'를 사용하여'doc = etree.parse ('settings.xml')'을 사용하여 파일을 가져올 수 있습니다. 그러면 foo.write로 파일을 쓸 수 있습니다. 위의 경우 어떻게 작동합니까? – Syborg

+0

원하는대로 조정할 수 있습니다. 당신이 언급 한 줄을 넣고 print 대신에'foo.write ("% s = % s \ n"% (el.attrib [ 'id'], el.attrib [ 'value']))'와 같은 쓰기를 사용하십시오. – TNW

+0

는이 코드'#으로 결국 다있어!는/usr/빈/ENV의 python2.7에게 수입 SYS, lxml.etree 문서 = lxml.etree.parse ('Settings.XML이') foo는 = do ('setting.cfg', 'w') foo.write ("% s = % s \ n"% (el.attrib [ 'id'])에서 엘에 대해 , el.attrib [ 'value'])) foo.close()' – Syborg