2010-10-20 90 views
3

我使用的是Python的xml.dom.minidom,但我認爲這個問題對於任何DOM解析器都是有效的。如何添加XML頭到DOM對象

我的原始文件的開頭有這樣一行:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 

這似乎並沒有成爲DOM的一部分,所以當我做類似dom.toxml()生成的字符串有不在一開始就行。

我該如何添加它?

例如outpupt:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<Root xmlns:aid="http://xxxxxxxxxxxxxxxxxx"> 
<Section>BANDSAW BLADES</Section> 
</Root> 

希望予以明確。

+0

這將是一個很好的例子,輸出應該是什麼樣的。 – pyfunc 2010-10-20 22:49:58

回答

2

這似乎並沒有成爲DOM

XML聲明沒有得到它自己的節點,沒有的一部分,但在其聲明的屬性是Document物體上可見:

>>> doc= minidom.parseString('<?xml version="1.0" encoding="utf-8" standalone="yes"?><a/>') 
>>> doc.encoding 
'utf-8' 
>>> doc.standalone 
True 

連載文檔應該本聲明的standalone="yes"一部分,但toxml()沒有。你可能會認爲這是一個錯誤,但實際上toxml()方法沒有作出任何承諾,以適當的方式將XML聲明串行化。 (如你,除非你專門爲它要求要麼沒有得到一個encoding

你可以把自己寫的文檔的負責人:

xml= [] 
xml.append('<?xml version="1.0" encoding="utf-8" standalone="yes"?>') 
for child in doc.childNodes: 
    xml.append(child.toxml()) 

但你真的需要在XML聲明這裏?您正在使用默認版本和編碼,並且由於您沒有DOCTYPE,因此不能有外部定義的實體,因此文檔已經是獨立的。根據XML standard:「如果沒有外部標記聲明,則獨立文檔聲明沒有意義」。在我看來,你可以完全忽略它。

+0

謝謝,這是比我更好的答案。能夠完全省略該標題的好處。 – 2010-10-20 23:17:58