解析和访问不受信任的XML

时间:2017-08-18 14:17:32

标签: xml erlang elixir

我有一些XML转换网关,它接受一种格式的XML,并从我不想信任的来源将其产生到另一种格式。现在,这些转换可能是微不足道的,就像在这里和那里更改几个attrs,或者相当复杂,我需要从头开始反汇编整个输入和构建输出。所以,基本上我有两个问题:

  1. 解析XML。它需要快速(最好)并且工作时不会炸毁原子表(我正在看着你,xmerl)因为来源不是那么可靠。

  2. 轻松访问深层嵌套元素以检索重建所需的信息。

  3. 虽然有一些解析XML的选项,例如fast_xmlerlsom库,但它们生成的结构相当难以访问,因为它们与xmerl_xpath不可比,到目前为止这是我发现获得深层嵌套数据的唯一理智方式。

    所以问题是,如果没有花费大量时间来创建我自己的解决方案,是否有办法实现这些目标?

    P.S。真的吗?试图关闭这个问题?我不是在问100个可用的库,我问的是如何解决大多数决定使用Erlang进行XML处理的人可能遇到的问题。

1 个答案:

答案 0 :(得分:0)

我无法为此问题找到任何现成的解决方案,因此我最终执行了以下操作:

1)使用ErlsomFast XML Erlang包将XML字符串解析为所谓的简单格式,如下所示:{"tag", [{"attr", "value"}], ["text node"]}其中children可以是包含一个字符串的列表,如示例或嵌套元素列表。

2)实现我自己的函数以根据给定的路径获取嵌套元素,因为最基本的用法不需要​​超过50个LOC

3)实现我自己的XML构建器,因为由于原子问题,xmerl不能再次使用。现在,这部分是相当有争议的,因为它有很多机会它有一些错误,不支持注释,cdata等等,但有一些测试与适当的数据,希望我能够使它足够稳定。无论如何我还有什么选择?!