복붙노트

[PYTHON] xml.etree.elementtree를 사용하여 서식있는 XML 파일을 인쇄하십시오 [duplicate]

PYTHON

xml.etree.elementtree를 사용하여 서식있는 XML 파일을 인쇄하십시오 [duplicate]

xml.etree.elementtree를 사용하여 Python으로 xml 파일을 작성하려고합니다. 문제는 계속해서 한 줄로 생성된다는 것입니다. 나는 가능하다면 나는 정말로 쓴 것을 깨끗하게 쓸 수 있기를 원한다면 그것들을 쉽게 참조 할 수 있기를 원한다.

이것이 내가 얻는 것입니다.

<Language><En><Port>Port</Port><UserName>UserName</UserName></En><Ch><Port>IP地址</Port><UserName>用户名称</UserName></Ch></Language>

이것이 제가보고 싶은 것입니다.

<Language>
    <En>
        <Port>Port</Port>
        <UserName>UserName</UserName>
    </En>
    <Ch>
        <Port>IP地址</Port>
        <UserName>用户名称</UserName>
    </Ch>
</Language>

해결법

  1. ==============================

    1.xml.dom.minidom의 toprettyxml () 함수를 사용하면 다음과 같이 할 수 있습니다.

    xml.dom.minidom의 toprettyxml () 함수를 사용하면 다음과 같이 할 수 있습니다.

    def prettify(elem):
        """Return a pretty-printed XML string for the Element.
        """
        rough_string = ElementTree.tostring(elem, 'utf-8')
        reparsed = minidom.parseString(rough_string)
        return reparsed.toprettyxml(indent="\t")
    

    아이디어는 문자열에 요소를 인쇄하고, minidom을 사용하여 구문 분석 한 다음 toprettyxml 함수를 사용하여 XML로 다시 변환하는 것입니다.

    출처 : http://pymotw.com/2/xml/etree/ElementTree/create.html

  2. ==============================

    2.ElementTree의 상위 집합 인 라이브러리 lxml을 사용할 수 있습니다. 그 tostring () 메소드는 pretty_print 매개 변수를 포함합니다. 예를 들면 다음과 같습니다.

    ElementTree의 상위 집합 인 라이브러리 lxml을 사용할 수 있습니다. 그 tostring () 메소드는 pretty_print 매개 변수를 포함합니다. 예를 들면 다음과 같습니다.

    >>> print(etree.tostring(root, pretty_print=True))
    <root>
      <child1/>
      <child2/>
      <child3/>
    </root>
    
  3. from https://stackoverflow.com/questions/17402323/use-xml-etree-elementtree-to-print-nicely-formatted-xml-files by cc-by-sa and MIT license