我有一個非常大的XML文件,其中包含有關網絡設備的數據。每次程序迭代時,它都會修改一個network_device條目,同時保留文件的其餘部分。我試圖找到最有效的方式來:Python:最有效的方法來更新lxml中的XML文件?
- 添加新network_device的元素,並將其添加到現有的XML文件,而不完全重寫它(因爲我認爲是更爲資源密集型)
- 變化的現有的network_device元素也儘可能保持資源友好。
我到目前爲止看到的每個示例都將整個XML文件加載到ElementTree對象的內存中,編輯樹並將樹寫入文件。每個文件高達幾百兆字節,這是一個非常密集的過程。
我正在使用lxml庫來做到這一點,但如果有更好的東西,我不會堅持這個想法。
<main>
<network_device updated="1/14/2017 10:02:45" checked="1/30/2017 18:55:30" hash="1cdf045c">
<hostname>CNMASAS02</hostname>
<management_ip>10.1.1.1</management_ip>
<serials>
<serial type="ABCD1234" hardware="somehardware" serial="XYZ1234567890"/>
<boot></boot>
</serials>
<cdp_neighbors>
<neighbor added="1/14/2017 10:02:45" ip="10.2.2.2" hostname="somedevice" platform="cisco_ios"/>
<neighbor added="1/14/2017 10:02:45" ip="10.2.2.2" hostname="somedevice" platform="cisco_ios"/>
</cdp_neighbors>
<interfaces>
</interfaces>
</network_device>
<network_device updated="1/14/2017 10:02:45" checked="1/30/2017 18:55:30" hash="1frgd432">
<hostname>CNMASAS03</hostname>
<management_ip>10.1.1.2</management_ip>
<error_code>#8: Could not access IP address to poll host.</error_code>
</network_device>
</main>
如果你想知道什麼是「最有效的」,你將不得不在不同的xml庫上運行你的樣本數據並做一些[基準測試](https://github.com/theMagicalKarp/python-xml-parsing-benchmark )。 – alfasin