2009-07-17 86 views
0

我正在尝试使用python expat解析XML文件。我在我的XML文件中的以下行:在Python处理数据的XML解析expat

<Action>&lt;fail/&gt;</Action> 

外籍标识开始和结束标记,但转换& LT;比性格更小,同样比特征就越显着,因而将其解析如下:

结果:

START 'Action' 
DATA '<' 
DATA 'fail/' 
DATA '>' 
END 'Action' 

,而不是所期望的:

START 'Action' 
DATA '&lt;fail/&gt;' 
END 'Action' 

我想有期望的结果,我如何防止外汇弄乱?

回答

2

expat不会搞砸,&lt;只是字符<的XML编码。恰恰相反,如果expat返回字面值&lt;,这将是XML规范的一个错误。话虽这么说,当然你可以逃脱的版本背部采用xml.sax.saxutils.escape

>>> from xml.sax.saxutils import escape 
>>> escape("<fail/>") 
'&lt;fail/&gt;' 

Expat解析器也是免费的报告所有字符串数据无论块觉得适合,所以你必须自己将它们连接起来。

0

SAX和StAX解析器都可以以任何便利的方式自由分解字符串(尽管StAX有一个强制它为你装配的COALESCE模式)。

原因在于,在某些情况下编写软件通常是可行的,这种情况下流并且不必关心重新组装字符串片段的开销。

通常我会在变量中累加文本,并在看到下一个StartElement或EndElement事件时使用内容。此时,我还将累计文本变量清空。