解析XML到wx.Python RichTextCtrl

问题描述:

我想显示在wx.Python RichTextCtrl一些文字,但我得到一个错误:解析XML到wx.Python RichTextCtrl

XML parsing error: 'not well-formed (invalid token)' at line 1 

具有讽刺意味的是,由RichTextXMLHandler生成的XML。我的代码是:

import wx 
import wx.richtext as rt 
from StringIO import StringIO 
from lxml import objectify 

class DisplayXML(wx.Frame): 

    def __init__(self, parent): 
    super(DisplayXML, self).__init__(parent) 

    self.InitUI() 
    self.SetTitle('Display XML') 
    self.Layout() 
    self.Fit() 
    self.Center() 
    self.Show() 
    self.DisplayRTF() 

    def InitUI(self): 
    self.txtRTF=rt.RichTextCtrl(self, size=(650,275), style=wx.VSCROLL|wx.HSCROLL); 
    mainSizer=wx.BoxSizer(wx.HORIZONTAL) 
    mainSizer.Add(self.txtRTF) 
    self.SetSizer(mainSizer) 
    self.InputXML='<?xml version="1.0" encoding="UTF-8"?>' + \ 
        '<richtext version="1.0.0.0" xmlns="http://www.wxwidgets.org">' + \ 
        '<paragraphlayout textcolor="#4C4C4C" fontsize="11" fontstyle="90"' + \ 
         'fontweight="90" fontunderlined="0" fontface="Ubuntu" alignment="1"' + \ 
         'parspacingafter="10" parspacingbefore="0" linespacing="10">' + \ 
          '<paragraph alignment="2">' + \ 
           '<text>Centred text</text>' + \ 
         '</paragraph>' + \ 
        '</paragraphlayout>' + \ 
        '</richtext>' 

    def DisplayRTF(self): 
    rtfXML=self.InputXML 

    #print rtfXML 
    #root = objectify.fromstring(rtfXML) 
    #print root.paragraphlayout.paragraph.getchildren()[0] 

    out = StringIO() 
    handler=wx.richtext.RichTextXMLHandler() 
    buffer=self.txtRTF.GetBuffer() 
    buffer.AddHandler(handler) 
    out.write(rtfXML) 
    out.seek(0) 
    handler.LoadStream(buffer, out) 
    self.txtRTF.Refresh() 

    self.txtRTF.SetValue(self.InputXML) 

if __name__ == '__main__': 

    DisplayXMLApp=wx.App() 
    DisplayXML(None) 
    DisplayXMLApp.MainLoop() 

有人可以告诉我我要去哪里吗?

+0

如果没有人可以帮助,任何人都可以指出一个示例,显示这可能会如何工作?谢谢 – Psionman

+0

好的。尝试消除后,解析器所反对的标记为'alignment =“1”'。如果我删除这个rtbox显示。谁能建议为什么这个XML是由RichTextXMLHandler生成的 – Psionman

+0

我错了。该问题已经通过确保xml代码被转换为字符串数据类型来解决 – Psionman

我错了。通过确保xml代码被转换为字符串数据类型已解决该问题

你的代码中的哪一行会引发错误?

+0

这不是一条线,我刚刚收到一个错误对话框 - 非常令人沮丧 – Psionman