python 萨克斯错误 "junk after document element"

标签 python sax

我使用 python sax 来解析 xml 文件。 xml文件其实就是多个xml文件的组合。 看起来像这样:

<row name="abc" age="40" body="blalalala..." creationdate="03/10/10" />
<row name="bcd" age="50" body="blalalala..." creationdate="03/10/09" />

我的 python 代码如下。它显示“文档元素后的垃圾”错误。解决这个问题的任何好主意。谢谢。

from xml.sax.handler import ContentHandler
from xml.sax import make_parser,SAXException
import sys

class PostHandler (ContentHandler):
    def __init__(self):
        self.find = 0
        self.buffer = ''
        self.mapping={}
    def startElement(self,name,attrs):
        if name == 'row':
             self.find = 1
             self.body = attrs["body"]
             print attrs["body"]
    def character(self,data):
        if self.find==1:
             self.buffer+=data
    def endElement(self,name):
        if self.find == 1:
             self.mapping[self.body] = self.buffer
             print self.mapping
parser = make_parser()
handler = PostHandler()
parser.setContentHandler(handler)
try:
    parser.parse(open("2.xml"))
except SAXException:

最佳答案

xmldata = '''
<row name="abc" age="40" body="blalalala..." creationdate="03/10/10" />
<row name="bcd" age="50" body="blalalala..." creationdate="03/10/09" />
'''

在数据周围添加包装标签。我使用了 ElementTree,因为它非常简单,但您可以在任何解析器上执行相同的操作:

from xml.etree import ElementTree as etree

# wrap the data
xmldata = '<rows>' +data + '</rows>'

rows = etree.fromstring(xmldata)
for row in rows:
    print row.attrib

结果

{'age': '40',
 'body': 'blalalala...',
 'creationdate': '03/10/10',
 'name': 'abc'}
{'age': '50',
 'body': 'blalalala...',
 'creationdate': '03/10/09',
 'name': 'bcd'}

关于 python 萨克斯错误 "junk after document element",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2574894/

相关文章:

python - 如何在 .wav 文件末尾添加几秒的静音?

Java - SAXParser 和 XMLReader 获取 null 属性值

python - 将不同列中的值合并到python列表中的一列中

Python 输入库 - 'NoneType' 对象没有属性 'terminate'

python进程占用100% CPU

python - Tkinter 窗口不显示任何内容

java - Java 中的 SAX 解析问题

java - 使用 XPath 的 JDom

java - 如何使用java中的解析器从nmap XML字符串(IP,端口)获取信息

java - 嵌套 SAX ContentHandlers