我有一个使用xml.dom.minidom创建的nodes xml.dom.Node对象的集合。通过使用Node对象的toxml()方法将它们转换为字符串,我将它们(单独)存储在数据库中。
问题是,有时我希望能够使用某种解析器将它们转换回适当的节点对象。据我所见,python附带的各种库都使用Expat,它不会解析像“”这样的字符串,也不会解析任何不正确的xml字符串。
那么,有人有什么想法吗?我意识到我可以以某种方式对节点进行pickle,然后将它们取消pickle,但这感觉很不愉快,我宁愿以一种可以阅读的形式存储,以便进行维护。肯定有什么东西能做到这一点?
对于表示这是可能的质疑,举一个例子说明我的意思:>>> import xml.dom.minidom
>>> x=xml.dom.minidom.parseString('foothing')
>>> x.documentElement.childNodes[0]
>>> x.documentElement.childNodes[0].toxml()
u'foo'
>>> xml.dom.minidom.parseString(x.documentElement.childNodes[0].toxml())
Traceback (most recent call last):
File "", line 1, in
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()”方法不会创建Expat(因此是现成的parseString)将解析的内容。
我想要的是将u'foo解析为文本节点的东西。一、 一些可以逆转.toxml()效果的东西