gpt4 book ai didi

python - 如何在 python 中解析表示 xml.dom.minidom 节点的字符串?

转载 作者:太空宇宙 更新时间:2023-11-04 09:20:48 24 4
gpt4 key购买 nike

我有一组使用 xml.dom.minidom 创建的节点 xml.dom.Node 对象。我通过使用 Node 对象的 toxml() 方法将它们转换为字符串,将它们(单独地)存储在数据库中。

问题是有时我希望能够使用某种解析器将它们转换回适当的 Node 对象。据我所知,python 附带的各种库都使用 Expat,它不会解析像 '' 之类的字符串,也不会解析任何不正确的 xml 字符串。

那么,有人有什么想法吗?我意识到我可以以某种方式对节点进行 pickle,然后再对它们进行 unpickle,但这感觉很不愉快,我宁愿以一种我可以阅读的形式存储,以供维护之用。肯定有什么东西可以做到这一点?

为了回应表示这是可能的疑问,我的意思是一个例子:

>>> 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()”方法不会创建 Expat(因此开箱即用的 parseString)将解析的内容。

我想要的是将 u'foo' 解析为文本节点的东西。 IE。可以逆转 .toxml() 效果的东西

最佳答案

from xml.dom.minidom import parseString

try:
node = parseString('')
except Exception:
node = None

关于python - 如何在 python 中解析表示 xml.dom.minidom 节点的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2891589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com