我有一些XML转换网关,它接受一种格式的XML,并从我不想信任的来源将其产生到另一种格式。现在,这些转换可能是微不足道的,就像在这里和那里更改几个attrs,或者相当复杂,我需要从头开始反汇编整个输入和构建输出。所以,基本上我有两个问题:
解析XML。它需要快速(最好)并且工作时不会炸毁原子表(我正在看着你,xmerl
)因为来源不是那么可靠。
轻松访问深层嵌套元素以检索重建所需的信息。
虽然有一些解析XML的选项,例如fast_xml
和erlsom
库,但它们生成的结构相当难以访问,因为它们与xmerl_xpath
不可比,到目前为止这是我发现获得深层嵌套数据的唯一理智方式。
所以问题是,如果没有花费大量时间来创建我自己的解决方案,是否有办法实现这些目标?
P.S。真的吗?试图关闭这个问题?我不是在问100个可用的库,我问的是如何解决大多数决定使用Erlang进行XML处理的人可能遇到的问题。
答案 0 :(得分:0)
我无法为此问题找到任何现成的解决方案,因此我最终执行了以下操作:
1)使用Erlsom
或Fast XML
Erlang包将XML字符串解析为所谓的简单格式,如下所示:{"tag", [{"attr", "value"}], ["text node"]}
其中children可以是包含一个字符串的列表,如示例或嵌套元素列表。
2)实现我自己的函数以根据给定的路径获取嵌套元素,因为最基本的用法不需要超过50个LOC
3)实现我自己的XML构建器,因为由于原子问题,xmerl
不能再次使用。现在,这部分是相当有争议的,因为它有很多机会它有一些错误,不支持注释,cdata等等,但有一些测试与适当的数据,希望我能够使它足够稳定。无论如何我还有什么选择?!