파이썬의 etree 라이브러리로 XML 파일을 생성하고 있습니다. 생성 된 파일의 한 노드는 기존 XML 파일에서 읽습니다. 이 요소를 추가하면 앞과 뒤의 노드에 대한 pretty_print가 손상됩니다. 이 결과 제공파일에서 읽은 xml-node를 추가하면 인접한 노드에 대해 pretty_print가 실행됩니다.
import xml.etree.cElementTree as ET
from lxml import etree
root = etree.Element("startNode")
subnode1 = etree.SubElement(root, "SubNode1")
subnode1Child1 = etree.SubElement(subnode1, "subNode1Child1")
etree.SubElement(subnode1Child1, "Child1")
etree.SubElement(subnode1Child1, "Child2")
f = open('/xml_testdata/ext_file.xml','r')
ext_xml = etree.fromstring(f.read())
ext_subnode = ext_xml.find("ExtNode")
subnode1.append(ext_subnode)
subnode1Child2 = etree.SubElement(subnode1, "subNode1Child2")
etree.SubElement(subnode1Child2, "Child1")
etree.SubElement(subnode1Child2, "Child2")
tree = etree.ElementTree(root)
tree.write("testfile.xml", xml_declaration=True, pretty_print=True)
: 매우 읽을 수
<startNode>
<SubNode1><subNode1Child1><Child1/><Child2/></subNode1Child1><ExtNode>
<NodeFromExt>
<SubNodeFromExt1/>
</NodeFromExt>
<NodeFromExt>
<SubNodeFromExt2/>
<AnotherSubNodeFromExt2>
<SubSubNode/>
<AllPrettyHere>
<Child/>
</AllPrettyHere>
</AnotherSubNodeFromExt2>
</NodeFromExt>
</ExtNode>
<subNode1Child2><Child1/><Child2/></subNode1Child2></SubNode1>
</startNode>
아니, 그것은 무엇입니까? "subNodeChild"가이 예제보다 훨씬 많은 하위 노드를 포함하는 경우 더욱 악화됩니다! 외부 요소를 추가하지 않고
, 그것은 다음과 같습니다
<startNode>
<SubNode1>
<subNode1Child1>
<Child1/>
<Child2/>
</subNode1Child1>
<subNode1Child2>
<Child1/>
<Child2/>
</subNode1Child2>
</SubNode1>
</startNode>
가 그래서 문제가 발생 외부 요소를 추가하여!
pretty_print-output을 깨지 않고 외부 요소를 추가 할 수 있습니까?
그런데'etree.fromstring (f.read(), parser)'대신'etree.parse ('/ xml_testdata/ext_file.xml', 파서)'를 사용할 수 있습니다. – mzjn