在 Python xml.dom 中读取字符串而不解析

Posted

技术标签:

【中文标题】在 Python xml.dom 中读取字符串而不解析【英文标题】:Read string without parsing in Python xml.dom 【发布时间】:2011-09-25 19:24:00 【问题描述】:

您可能知道,如果 xml 代码有任何问题,Python 的 xml.dom readString() 会抛出异常。

我目前正在编写一个简单的 xmpp 聊天服务器,您可能也知道,第一个客户端请求消息中的一个不会关闭 stream:stream 标记,直到它没有得到回复。

有什么方法可以在不“解析”xmlcode 的情况下使用pythons xml.dom 还是我应该编写自己的xml 解析器?

【问题讨论】:

【参考方案1】:

DOM 解析器总是需要读取整个 XML 文件。你想要一个SAX parser。

【讨论】:

【参考方案2】:

您不使用像xmpppy 这样的已经建立的XMPP 库有什么原因吗? (See also)

【讨论】:

为什么苹果要编写mac os而不是windows?我只是想获得练习并获得乐趣......【参考方案3】:

可能给你最好体验的解析器是xml.parsers.expat。在您的 StartElementHandler 创建一个 DOM 元素,并将其作为子元素添加到当前元素,然后将当前元素设置为新元素。在您的EndElementHandler 中,将当前元素弹出到该元素的父元素。如果父级是null,你有一个节。仔细测试命名空间;你很容易在第一次得到错误的属性。

【讨论】:

以上是关于在 Python xml.dom 中读取字符串而不解析的主要内容,如果未能解决你的问题,请参考以下文章

python 读取xml时文本节点显示元素节点

如何用python读取xml文件

XML生成与解析(DOMElementTree)

Selenium2+Python3.6实战:读取xml文件,获得标签信息ExpatError: not well-formed (invalid token)

Python将字符串读取为字节而不进行转换

python Python 3在打印XML DOM文档时出现了皱纹,因为数据类型为字节,必须显式解码为字符串。这里