본문 바로가기
파이썬

파이썬 Python의 ElementTree를 XML 파일로 예쁜 인쇄하려면 어떻게해야합니까?

by º기록 2020. 11. 28.
반응형

SQLite를 사용하여 데이터베이스에 액세스하고 원하는 정보를 검색하고 있습니다. Python 버전 2.6에서 ElementTree를 사용하여 해당 정보로 XML 파일을 만듭니다.

import sqlite3
import xml.etree.ElementTree as ET

# NOTE: Omitted code where I acccess the database,
# pull data, and add elements to the tree

tree = ET.ElementTree(root)

# Pretty printing to Python shell for testing purposes
from xml.dom import minidom
print minidom.parseString(ET.tostring(root)).toprettyxml(indent = "   ")

#######  Here lies my problem  #######
tree.write("New_Database.xml")

위 코드의 마지막 줄 대신 tree.write ( "New_Database.xml", "utf-8") 를 사용해 보았지만 XML의 레이아웃을 전혀 편집하지 않았습니다. 여전히 뒤죽박죽입니다.

나는 또한 바이올린을 연주하기로 결정하고 시도했습니다.
tree = minidom.parseString (ET.tostring (root)). toprettyxml (indent = "")
Python 셸에 인쇄하는 대신 AttributeError : '오류가 발생합니다. unicode '개체에는'write '속성이 없습니다 .

마지막 줄의 XML 파일에 트리를 쓸 때 Python 셸과 마찬가지로 XML 파일에 예쁜 인쇄 방법이 있습니까?

여기서 toprettyxml () 을 사용할 수 있습니까? 아니면 다른 방법이 있습니까?

 

해결 방법

 

XML 문자열이 무엇이든, 쓰기 위해 파일을 열고 파일에 쓰기 위해 파일을 열어 원하는 파일에 쓸 수 있습니다.

from xml.dom import minidom

xmlstr = minidom.parseString(ET.tostring(root)).toprettyxml(indent="   ")
with open("New_Database.xml", "w") as f:
    f.write(xmlstr)

특히 Python 2에서는 문자열의 유니 코드 문자에 대해 덜 엄격하고 덜 정교 해지는 한 가지 가능한 복잡성이 있습니다. toprettyxml 메서드가 유니 코드 문자열 ( u "something")을 다시 전달하는 경우 UTF-8과 같은 적절한 파일 인코딩으로 캐스팅 할 수 있습니다. 예 : 하나의 쓰기 줄을 다음으로 바꿉니다.

f.write(xmlstr.encode('utf-8'))

 

참조 페이지 https://stackoverflow.com/questions/28813876

 

 

반응형

댓글