我希望你們做得很好。
我正在嘗試使用預定義的順序對 XML 進行排序,作為主要標準,并在匯出之前根據我正在處理的 XML 檔案的“id”作為第二標準。我正在使用“xml.etree.ElementTree”,并且我已經根據需要添加了所有元素和子元素,我無法解決的最后一部分是排序。
XML 匯出的 XML 如下:
<List>
<Level1>
<LevelA id="zzz"/>
<DO name="Info01"/>
</LevelA >
<LevelB id="ccc"/>
<DO name="Info01"/>
</LevelB>
<LevelA id="aaa"/>
<DO name="Info01"/>
</LevelA >
<LevelC id="bbb"/>
<DO name="Info01"/>
</LevelC>
<LevelA id="ddd"/>
<DO name="Info01"/>
</LevelA>
<LevelB id="aaa"/>
<DO name="Info01"/>
</LevelB>
<LevelC id="aaa"/>
<DO name="Info01"/>
</LevelC>
</Level1>
</List>
定義的順序是:
預定義順序 = ['LevelA', 'LevelB', 'LevelC']
預期的:
<List>
<Level1>
<LevelA id="aaa"/>
<DO name="Info01"/>
</LevelA >
<LevelA id="ddd"/>
<DO name="Info01"/>
</LevelA>
<LevelA id="zzz"/>
<DO name="Info01"/>
</LevelA >
<LevelB id="aaa"/>
<DO name="Info01"/>
</LevelB>
<LevelB id="ccc"/>
<DO name="Info01"/>
</LevelB>
<LevelC id="aaa"/>
<DO name="Info01"/>
</LevelC>
<LevelC id="bbb"/>
<DO name="Info01"/>
</LevelC>
</Level1>
</List>
請幫我提供一些線索。
謝謝
D
uj5u.com熱心網友回復:
嘗試:
xml_doc = """
<List>
<Level1>
<LevelA id="zzz">
<DO name="Info01"/>
</LevelA>
<LevelB id="ccc">
<DO name="Info01"/>
</LevelB>
<LevelA id="aaa">
<DO name="Info01"/>
</LevelA>
<LevelC id="bbb">
<DO name="Info01"/>
</LevelC>
<LevelA id="ddd">
<DO name="Info01"/>
</LevelA>
<LevelB id="aaa">
<DO name="Info01"/>
</LevelB>
<LevelC id="aaa">
<DO name="Info01"/>
</LevelC>
</Level1>
</List>
"""
from xml.etree.ElementTree import fromstring, tostring
myxml = fromstring(xml_doc)
predefined_order = ["LevelA", "LevelB", "LevelC"]
level1 = myxml.find(".//Level1")
level1[:] = sorted(
level1,
key=lambda child: (predefined_order.index(child.tag), child.get("id")),
)
print(tostring(myxml).decode("utf-8"))
印刷:
<List>
<Level1>
<LevelA id="aaa">
<DO name="Info01" />
</LevelA>
<LevelA id="ddd">
<DO name="Info01" />
</LevelA>
<LevelA id="zzz">
<DO name="Info01" />
</LevelA>
<LevelB id="aaa">
<DO name="Info01" />
</LevelB>
<LevelB id="ccc">
<DO name="Info01" />
</LevelB>
<LevelC id="aaa">
<DO name="Info01" />
</LevelC>
<LevelC id="bbb">
<DO name="Info01" />
</LevelC>
</Level1>
</List>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/471895.html
下一篇:什么是無效字符物體&ccb
