2011-06-14 62 views
3

有没有办法使用SAX XML解析器“跳过”一行?跳过异常的python sax解析器

我有一个非确认XML文档,它是有效XML文档的串联,因此每个文档都会显示<?xml ...?>。另外请注意,由于输入文档很大,我需要使用SAX解析器。

我尝试为解析器创建一个“自定义流”类作为进纸器,但很快意识到SAX使用read方法并因此读取“字节数组”中的内容,从而爆炸了此项目的复杂性。

谢谢!

更新:我知道有办法解决这个使用csplit但我是一个基于Python的解决方案后,如果在合理范围内所有可能的。

Update2:也许我应该说“跳到下一个文件”,这会更有意义。无论如何,这就是我需要的:从单个输入流中解析多个文档的方式。

+1

不仅指令'',而且格式良好的XML文档需要一个根元素,跳过该行,你再次得到一个XML格式的文档没有很好地形成。你不能只追加一个XML文件到另一个,解析一个,然后另一个。 – 2011-06-14 13:43:33

+0

@mg:参见我的“update2” – jldupont 2011-06-14 15:44:42

+0

创建一种协议:四个字节,即XML文档的长度并遵循文档本身,读取文档并使用sax解析它。接下来的四个字节是下一个xml文档的长度,读取并解析它,依此类推。 – 2011-06-15 13:07:32

回答

0

当您将文档拼接在一起时,只需更换开始的<?和?>与<! - 和 - >,这将注释掉xml声明。

+0

不能:我需要事先处理整个文件...我想使用SAX解析器的原因是为了避开这个过程。 – jldupont 2011-07-12 01:14:35

+0

可以替换声明并在文件连接时添加根元素吗? – NoBugs 2011-07-12 05:20:13

+0

文件连接在一起。 – jldupont 2011-07-13 02:42:55