使用em dash解析XML时出错

时间:2012-12-13 20:39:34

标签: python xml xml-parsing

我正在开发一个Web应用程序,它通过python脚本提取推文列表。当我提交包含em破折号的推文时,我无法解析XML文件。

我的脚本是:

#! /usr/bin/python
import cgi
from peewee import *
from sql_connect import *
import sql_connect
import sys

xmlString = ""

# Create XML string
xmlString += "<TweetList>"

tweets = Tweet_Info.select()
for tweet in tweets:
    xmlString += "<Tweet>"
    xmlString += "<UserName>"
    xmlString += tweet.user
    xmlString += "</UserName>"
    xmlString += "<UserImage>"
    xmlString += tweet.user_image_url
    xmlString += "</UserImage>"
    xmlString += "<Text>"
    xmlString += tweet.text
    xmlString += "</Text>"
    xmlString += "</Tweet>"

xmlString += "</TweetList>"

# Print beginning xml stuff
print "Content-Type: text/xml"
print
print '<?xml version="1.0" encoding="UTF-8"?>' 
print xmlString

我在浏览器中加载python脚本时出现的错误是:

XML Parsing Error: no element found
Location: http://localhost/cgi-bin/GetTweets2.py
Line Number 2, Column 1:

我觉得解决这个问题可能相当简单。我尝试过为xml使用各种不同的编码类型,但没有成功。我应该使用特定的编码类型吗?或者有一种简单的方法来过滤掉我遗漏的特殊角色吗?

1 个答案:

答案 0 :(得分:0)

如果您要生成XML,那么以正确的方式执行它是一个更好的主意:创建一个包含您要序列化的数据的数据结构,并使用内置的Python功能将其转换为XML 。这种方法的优点还在于您不必担心编码错误和奇怪的输入。 (如果推文包含文本</Text>,请考虑当前脚本会发生什么。)