我有一個使用xml.dom.minidom創建的節點xml.dom.Node對象的集合。我將它們(單獨)存儲在數據庫中,方法是使用Node對象的toxml()方法將它們轉換爲字符串。如何在python中解析表示xml.dom.minidom節點的字符串?
問題是,我有時希望能夠使用某種解析器將它們轉換回適當的Node對象。據我可以看到python使用的各種庫使用Expat,它不會解析字符串,如''或任何不是正確的xml字符串。
那麼,有沒有人有任何想法?我意識到我可以通過某種方式來醃製節點,然後取下它們,但這會讓人覺得不愉快,我寧願將它們存儲在一個可以用於維護目的的表單中。當然有什麼會做到這一點?
爲響應表示懷疑,這是可能的,我的意思的例子:
>>> import xml.dom.minidom
>>> x=xml.dom.minidom.parseString('<a>foo<b>thing</b></a>')
>>> x.documentElement.childNodes[0]
<DOM Text node "u'foo'">
>>> x.documentElement.childNodes[0].toxml()
u'foo'
>>> xml.dom.minidom.parseString(x.documentElement.childNodes[0].toxml())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/dom/minidom.py", line 1928, in parseString
return expatbuilder.parseString(string)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/dom/expatbuilder.py", line 940, in parseString
return builder.parseString(string)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/xml/dom/expatbuilder.py", line 223, in parseString
parser.Parse(string, True)
xml.parsers.expat.ExpatError: syntax error: line 1, column 0
換句話說,「.toxml()」方法不創造一些外籍人士(並因此出的框parseString)將解析。
我想要的是將u'foo'解析爲文本節點。即這將扭轉.toxml()的效果
我沒有看到如何toxml用於'調用()'可能會產生不正確的XML片段......從而通過toxml用於'生成的所有字符串()'應該是由'解析可解析()'或'parseString( )'xml.dom.minidom'的函數... – 2010-05-23 12:06:22
謝謝你的例子。事實上,文本節點呈現爲純文本,這不是有效的xml。 – 2010-05-25 04:59:08