【问题标题】:Erlang xml parsing with bit syntax使用位语法解析 Erlang xml
【发布时间】:2011-02-01 23:33:29
【问题描述】:

我正在尝试为某种 API 编写特定的 xml 解析器,我想知道是否可以在没有现有的 xml 解析器(如 xmerl)的情况下让它工作。仅使用位语法来实现它有多可行,是否有任何在线文档显示如何开始以这种方式解析 xml?

【问题讨论】:

    标签: xml erlang


    【解决方案1】:

    这是不可行的,XML 解析器可用是有原因的,如果可行,那么专用解析器将不存在。位语法仅适用于位/字节的顺序固定时。 XML 不要求属性的顺序,而且大多数人没有意识到 XML 规范也没有要求同级元素的顺序。因此,尝试使用位语法匹配任何内容都不适用于 XML 的所有可能输入,只是属性的无序性质,更不用说无序的兄弟元素了。只需使用 XML 解析器,这不是你想死的山。

    【讨论】:

    • @hyperboreean:同意以上所有内容。使用 erlang 模式匹配来帮助遍历解析,例如xmerl_scan:file/2 ...
    • 好的,上面的答案完全有道理,我不知道我在想什么。我想我想要一些非常专业的东西,可以非常快速地解析预期的协议,这就是我考虑位语法的原因。
    • @Peer Stitzinger:会那样做吗,你对 xmerl_scan:file/2 有任何基准吗?我正在寻找非常快的东西
    • @hyperboreean:抱歉这里没有基准,但结果将取决于数据。将一些 XML 放在一个文件中,然后在 erlang shell 上调用 xmerl_scan:file 并对其进行基准测试。这不会花费太多时间,并且您会立即获得有意义的结果。
    • @hyperboreean 非常快和 XML 在性能方面在宏观层面上几乎是相互排斥的,与专门的位压缩协议相比,即使这样你也会遇到时间/空间平衡问题。紧密打包的协议比松散打包的协议花费更多的时间来解析,因此 XML 和性能仅根据 XML 节的语法和解析器以及您使用它的方式而相互关联。
    猜你喜欢
    • 1970-01-01
    • 2019-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多