【发布时间】:2017-09-06 16:34:01
【问题描述】:
我正在尝试按字母顺序对 XML 进行排序,同时确保特定元素位于顶部。我已设法按字母顺序对其进行排序,但我无法保留该元素。这是我目前所拥有的:
from lxml import etree
data = """
<Example xmlns="http://www.example.org">
<E>
<A>A</A>
<B>B</B>
<C>C</C>
</E>
<B>B</B>
<D>D</D>
<A>A</A>
<C>C</C>
<F>F</F>
</Example>
"""
doc = etree.XML(data,etree.XMLParser(remove_blank_text=True))
for parent in doc.xpath('//*[./*]'):
parent[:] = sorted(parent,key=lambda x: x.tag)
print etree.tostring(doc,pretty_print=True)
结果是:
<Example xmlns="http://www.example.org">
<A>A</A>
<B>B</B>
<C>C</C>
<D>D</D>
<E>
<A>A</A>
<B>B</B>
<C>1</C>
</E>
<F>F</F>
</Example>
无论如何我可以阻止<E></E> 部分及其内容移动吗?
【问题讨论】:
-
<E>是什么使它成为不应该排序的元素?是因为它有子节点吗? -
@James Nope,子节点无关紧要。我想让 XML 符合给定的模式,这要求
保持在顶部,但我希望按字母顺序对其余部分进行排序。
标签: python xml sorting alphabetical