2012-08-03 79 views
3

我有一個大的XML文件,我需要解析並查找特定的節點。一旦找到它,我需要複製,編輯幾個值並再次寫入文件。用Python複製和編寫XML節點

到目前爲止,我設法獲得了我想要的DOM元素。實際上XML中有兩個元素已經存在,所以在完成之後,會有三個元素。一旦我製作了DOM的副本並編輯了該值,我該如何將它寫入DOM(從而將其寫入文件)呢?

我現在使用Python的from xml.dom import minidom

回答

4

在minidom命名你開始創建文檔:

text_node = doc.createTextNode(str(some content)) 
doc.appendChild(text_node) 

,如果你有例如<some_elem key="my value">some my text</some_elem>

Document doc = Document("your_root") 

那麼如果你想添加一個文本節點,你追加它:

做這樣的:

text_node = doc.createTextNode('some my text') 
elem.appendChild(text_node) 
elem.setAttribute('key', 'my value') 

如果是複雜的元素與創建它:

elem = doc.createElement('your_elem') 

如果你需要設置的屬性是:

elem.setAttribute("some-attribute",your_attr) 

如果您需要附加的東西吧:

elem.appendChild(some_other_elem) 

然後附加元素:

doc.appendChild(elem) 

如果需要的字符串表示做:

doc.toxml() 

doc.toprettyxml() 
+0

如果我有以下形式的元件' VALUE' 。我有這個元素後,如何設置VALUE?謝謝你的幫助! :D – user130810 2012-08-03 11:59:32

+0

嘗試做一個:'field.childNodes [0] .nodeValue = new_val'。捕獲任何IndexErrors等。 – Federer 2012-08-03 12:52:43

+2

我現在正在修改示例以向您展示。 – Edmon 2012-08-03 12:54:01

1

minidom documentation

from xml.dom.minidom import getDOMImplementation 

impl = getDOMImplementation() 

newdoc = impl.createDocument(None, "some_tag", None) 
top_element = newdoc.documentElement 
text = newdoc.createTextNode('Some textual content.') 
top_element.appendChild(text) 

所以我猜appendChild是你問什麼?