我有一個非常大的XML,我需要從刪除一些特定的節點在另一個節點。 例如我有一個列表,其中包含應該出現在xml中的節點的名稱。因此,除了這些節點之外,父節點中的所有其他節點都應該被刪除並寫入新的xml文件。Python:在xml中,如何刪除父節點中的節點
我只需要刪除節點,即「實例」,其中第一個「數據」元素不等於出現在我的名單,我會提供一個值。其餘的xml信息,即'描述','符號'標籤不應該被打擾。
假設:我已經解析了應該從外部文件讀取到python列表變量的數據。
DOM或SAX任何人都可以。但我相信DOM非常快。 對於任何BIF的可用或邏輯的任何提示對我來說也是很好的。
注意:我是Python新手。所以請評論我的代碼中是否有任何錯誤。
我下面的代碼:
from xml.etree.ElementTree import ElementTree
tree = ElementTree()
tree.parse('Test.xml')
file = open("File.txt")
list = []
for lines in file:
list.append(lines)
Instance = tree.findall('Instance')
for i in Instance:
while (i != list[i]):
Instance.remove(i)
tree.write('new.xml')
下面是示例XML文件:
<?xml version='1.0' encoding='UTF-8'?>
<Identification>
<Description ID="12">Some text</Description>
</Identification>
<Symbols>
<Name Width="1">abc</Name>
<Name Width="2">def</Name>
</Symbols>
<Instance RowRef="A">
<DataSet>
<Data>12345678</Data>
</DataSet>
<DataSet>
<Data>abcd</Data>
</DataSet>
<DataSet>
<Data>abcd</Data>
</DataSet>
</Instance>
<Instance RowRef="B">
<DataSet>
<Data>87654321</Data>
</DataSet>
<DataSet>
<Data>abcd</Data>
</DataSet>
<DataSet>
<Data>abcd</Data>
</DataSet>
</Instance>
<Instance RowRef="C">
<DataSet>
<Data>06354237/Data>
</DataSet>
<DataSet>
<Data>abcd</Data>
</DataSet>
<DataSet>
<Data>abcd</Data>
</DataSet>
向我們展示您的工作? – 2014-09-27 19:41:42
@Vivek:我用我的代碼更新了問題的詳細信息。用我的代碼,所有的xml標籤都被替換爲「ns0:」。我不知道爲什麼會發生這種情況。 – manty 2014-09-27 20:11:28
'File.txt'的內容是什麼? – Yoel 2014-09-27 20:29:11