那里有很多 python XML 決議教程,但關于更新 XML 的教程并不多,而且我找不到符合我需要的教程。對不起,N00B。
我需要根據另一個子元素的值將子元素添加到特定元素。
<CadData>
<FireIncidentCollection>
<FireIncident>
<IncidentNo>12345</IncidentNo>
<ApparatusCollection>
<Apparatus>
<Unit>E29</Unit>
</Apparatus>
<Apparatus>
<Unit>TW29</Unit>
</Apparatus>
<Apparatus>
<Unit>R29</Unit>
</Apparatus>
</ApparatusCollection>
</FireIncident>
</FireIncidentCollection>
</CadData>
我有值,甚至需要根據“設備”元素的“單位”值添加其他子樹。例如,當“Unit”==“TW29”時,我可能需要在那個“Apparatus”元素中添加這個片段:
<DispatchTime>20221115T06:05:04-6.00</DispatchTime>
<ApparatusPersonnelCollection>
<ApparatusPersonnel>
<ID>23456</ID>
</ApparatusPersonnel>
<ApparatusPersonnel>
<ID>78901</ID>
</ApparatusPersonnelCollection>
到目前為止,我一直在抵制將所有內容轉儲到資料庫并每次都重寫整個檔案的沖動:)。我確定在 ElementTree 或 DOM 中有一種方法,但我無法弄清楚(不是因為缺乏努力)。非常感謝任何指標。謝謝!
(哦,不,我不控制模式——我只需要遵守它)。
uj5u.com熱心網友回復:
第一步是將這些資訊放入字典中 - 然后更新資料會容易得多
我建議結合使用xmltodict庫和本教程- 這將允許您轉換為可以遍歷的字典。
從那里,向下遍歷字典。該xmltodict庫的優點在于它將具有相同標記的 xml 轉換為串列,因此ApparatusCollection轉換后您可能看起來像這樣:
>>> data['CadData']['FireIncidentCollection']['FireIncident']['ApparatusCollection']
{'Apparatus': [{'Unit': 'E29'}, {'Unit': 'TW29'}, {'Unit': 'R29'}]}
只需找到“ApparatusCollect”鍵,并更新“Apparatus”部分。我的猜測是它看起來接近于此:
{'Apparatus': [
{
'Unit': 'E29',
'DispatchTime':20221115T06:05:04-6.00},
'ApparatusPersonnelCollection': {
'ApparatusPersonnel': [23456, 78901]
} ...
添加所需內容后,只需將字典轉換回 XML即可。
希望這可以幫助!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/536424.html
標籤:PythonXML
