2012-12-21 2 views
-1

일부 XML을 작성하기 위해 Python 스크립트를 작성했지만 파이썬 내에서 제목을 편집하는 방법을 찾지 못했습니다.Python을 사용하여 XML 헤더 편집

기본적으로, 대신 내 제목으로이있는의 :

<?xml version="1.0" ?> 

나는이 있어야합니다 :

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> 

나는 이것이 최선 내가 할 수 들여다을하지만, 독립를 추가 할 수있는 방법을 찾을 수 없습니다 상태를 파이썬에서. 그래서 파일을 만든 다음 텍스트를 바꿔야한다고 생각했습니다. 필자는 여러 곳에서 XML 형식을 망칠 수 있기 때문에 readlines()를 사용하여 멀리 있어야한다고 읽었습니다. 내가 파이썬 편집 XML에 대한 또 다른 유래의 게시물에서 취득한 - -

현재 내가 가지고있는 코드는이 작업을 수행하는 것입니다하십시오 KeyError를 나에게 제공

doc = parse('file.xml') 
elem = doc.find('xml version="1.0"') 
elem.text = 'xml version="1.0" encoding="UTF-8" standalone="no"' 

합니다. 나는 그것을 쓸모 없게 디버깅하려했는데 아마도 XML 제목이 이런 식으로 편집 할 의도가 없다고 믿게한다. 또는 내 코드가 잘못되었습니다. 누군가가 호기심 (또는 기적적으로 파이썬 코드로 독립 상태를 삽입하는 방법을 알고있는) 경우

는, 여기에 XML 파일을 작성하는 내 코드입니다 :

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

어떤 사람들은 좋아하지 않는다 "toprettyxml을"하지만, 상대적으로 기본적인 수준에서, 그것은 최상의 선택 인 것 같았습니다.

어쨌든 누군가가 조언이나 통찰력을 제공 할 수 있다면 매우 감사하게 생각합니다.

+0

어떤 API를 사용하고, 어떤 파이썬 버전을 tostring()standalone 플래그를 지원? –

+0

@MartijnPieters Python 2.7.3 및 IDLE을 사용하고 있습니다. 감사. –

+0

IDLE은 IDE이지만 XML API는 아닙니다. ['xml.etree.ElementTree' 라이브러리를 사용하고 있습니까?] (http://docs.python.org/2/library/xml.etree.elementtree.html)? –

답변

0

xml.etree API는 XML 선언에 standalone 속성을 쓰는 옵션을 제공하지 않습니다.

대신 lxml library을 사용할 수도 있습니다. 동일한 ElementTree API를 사용하지만 출력을 더 많이 제어 할 수 있습니다.

from lxml import etree 

etree.tostring(doc, pretty_print=True, standalone=False) 

또는 .write()를 사용, 같은 옵션을 지원합니다 :

doc.write(outputfile, pretty_print=True, standalone=False) 
+0

나는 그것을 보았지만 Python 표준 라이브러리를 고수하기를 희망했습니다. 나는 그것이 지금 시점에서 가능하지 않을지도 모른다라고 생각한다. 나는 lxml을 시도 할 것이다. –

+0

@CreativeName : 다른 방법은 선언없이 XML의 나머지 부분을 작성하기 전에 선언을 직접 작성하는 것입니다. –

관련 문제