【问题标题】:XML::Parser breaks text strings randomlyXML::Parser 随机破坏文本字符串
【发布时间】:2011-11-04 14:30:17
【问题描述】:

这个问题类似于HTML::PullParser splits up text element randomly。基本上我正在运行 XML::Parser,当它获取字符串时,它会将它们分成多个部分(我想是为了加快速度)。但是我能做些什么来防止这种行为呢?我似乎在文档中找不到该模块或XML::Parser::Expat 的任何内容。

【问题讨论】:

    标签: xml perl xml-parsing


    【解决方案1】:
    When you get text,
    
    - Append the text to a buffer.
    
    When you get something other than text,
    
    - If the buffer contains text,
      - Process the text in the buffer.
      - Empty the buffer.
    
    - Process what you just got.
    

    【讨论】:

    • 查看我对另一个答案的评论 - 这原则上很容易做到,但我的特定应用程序有一个古怪的功能,阻止我这样做(由于专有原因无法详细说明)。这个问题的真正目的是查看XML::Parser 是否像HTML::PullParser 一样有一个switch。如果有人明确知道它没有该功能,请告诉我。
    【解决方案2】:

    我并不特别了解这个解析器,但它是流解析器的一个共同特性,规范允许它们在任何他们喜欢的地方分割文本节点。在许多情况下,他们利用这一点在实体边界处拆分文本(避免字符串复制操作),但例如,他们也可以在 I/O 缓冲区边界处执行此操作。您要么必须忍受它,在应用程序级别自己组装文本,要么使用更高级别的 XML 处理接口,例如 XSLT 或 XQuery。

    【讨论】:

    • 是的,从技术上讲,我可以在应用程序级别做到这一点。但是出于某些(很长,很难解释)的原因,这并不理想。还在找开关。应该有一个吧? (特别是 HTML::Parser 有一个。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2012-03-23
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多