我有一个使用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()效果的东西

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐