【发布时间】:2011-09-25 19:24:00
【问题描述】:
您可能知道,如果 xml 代码有任何问题,Python 的 xml.dom readString() 会抛出异常。
我目前正在编写一个简单的 xmpp 聊天服务器,您可能也知道,第一个客户端请求消息中的一个不会关闭 stream:stream 标记,直到它没有得到回复。
有什么方法可以在不“解析”xmlcode 的情况下使用pythons xml.dom 还是我应该编写自己的xml 解析器?
【问题讨论】:
您可能知道,如果 xml 代码有任何问题,Python 的 xml.dom readString() 会抛出异常。
我目前正在编写一个简单的 xmpp 聊天服务器,您可能也知道,第一个客户端请求消息中的一个不会关闭 stream:stream 标记,直到它没有得到回复。
有什么方法可以在不“解析”xmlcode 的情况下使用pythons xml.dom 还是我应该编写自己的xml 解析器?
【问题讨论】:
DOM 解析器总是需要读取整个 XML 文件。你想要一个SAX parser。
【讨论】:
可能给你最好体验的解析器是xml.parsers.expat。在您的 StartElementHandler 创建一个 DOM 元素,并将其作为子元素添加到当前元素,然后将当前元素设置为新元素。在您的EndElementHandler 中,将当前元素弹出到该元素的父元素。如果父级是null,你有一个节。仔细测试命名空间;你很容易在第一次得到错误的属性。
【讨论】: