2009-03-25 3 views

답변

11

방금 ​​파일에 해당 문자열을 쓸 수 있도록 XML DOM에서 문자열을 만드는 데 사용 doc.toprettyxml에 링크 된 웹 페이지의 코드 :

f = open("output.xml", "w") 
try: 
    f.write(doc.toprettyxml(indent=" ")) 
finally: 
    f.close() 

파이썬 2.6 (또는 2.7에서 내 생각 당신이

from __future__ import with_statement 
,536를 넣어 경우는 파이썬 2.5에서 작동

with open("output.xml", "w") as f: 
    f.write(doc.toprettyxml(indent=" ")) 

:가) 나올 때마다, 당신은 "with"문을 사용할 수 있습니다

파일의 시작 부분.

+0

하나가'with'을 추가 할 수 있습니다. –

1
f = open('yourfile.xml', 'w') 
xml.dom.ext.PrettyPrint(doc, f) 
f.close() 
+0

감사합니다. 이 열린 메서드는 새 파일을 만듭니다? –

+0

그것은 함수이고, 파일이 이미 존재하지 않고 'w', 'wb'등이 전달되면 새로운 파일을 생성합니다. 문서를 읽으십시오. –

+0

또한 먼저 xml.dom을 가져와야합니까? –

9

coonj는 일종의 종류이지만 xml.dom.ext.PrettyPrint는 점차 무시되는 PyXML 확장 패키지의 일부입니다.

f= open('yourfile.xml', 'wb') 
doc.writexml(f, encoding= 'utf-8') 
f.close() 

를 (또는 약간 짧게 다윗에 의해 언급 한 바와 같이 문 '과'을 사용하여 모드 'WB'를 사용 : 제공된 것과 같이 표준 minidom 이내 체류하려는 경우, 당신은 말할 것입니다. UTF-16 같은 인코딩을 방해하는 원치 않는 CRLF 개행을 피하십시오 .XML에는 개행 해석을 처리하는 자체 메카니즘이 있으므로 텍스트가 아닌 바이너리 파일로 처리해야합니다.

' encoding '인수 (writexml 또는 toprettyxml)를 사용하면 유니 코드 문자열을 파일에 직접 쓰려고하므로 비 ASCII 문자가 있으면 UnicodeEncodeError가 표시됩니다. 자신의 toprettyxml의 결과를 .encode()하지 마라. 비 UTF-8 인코딩의 경우 이는 형식이 올바르지 않은 XML을 생성 할 수 있습니다.

에는 'writeprettyxml()'기능도 없다, 그러나 그것은 스스로 할 하찮게 간단 : 편집에 대한

with open('output.xml', 'wb') as f: 
    doc.writexml(f, encoding= 'utf-8', indent= ' ', newl= '\n') 
관련 문제