解析和访问不受信任的XML
我有一种XML转换网关,它接受一种格式的XML,并从我不信任的源生成另一种格式的XML。现在,这些转换可以是琐碎的,比如在这里或那里更改几个属性,也可以是相当复杂的,我需要从头开始分解整个输入并构建输出。所以,基本上我有两个问题:解析和访问不受信任的XML,xml,erlang,elixir,Xml,Erlang,Elixir,我有一种XML转换网关,它接受一种格式的XML,并从我不信任的源生成另一种格式的XML。现在,这些转换可以是琐碎的,比如在这里或那里更改几个属性,也可以是相当复杂的,我需要从头开始分解整个输入并构建输出。所以,基本上我有两个问题: 解析XML。它需要快速(最好)并且在不破坏atoms表的情况下工作(我正在看你,xmerl),因为源代码并不那么可靠 轻松访问深度嵌套的元素以检索重建所需的信息 虽然有一些解析XML的选项,如fast_XML和erlsom库,但它们生成的结构很难访问,因为它们无法与x
xmerl
),因为源代码并不那么可靠fast_XML
和erlsom
库,但它们生成的结构很难访问,因为它们无法与xmerl_xpath
进行比较,到目前为止,这是我发现的唯一一种获得深度嵌套数据的明智方法
所以问题是,是否有一种方法可以实现这些目标,而无需花费大量时间创建自己的解决方案
说真的?想结束这个问题吗?我不是问在100个可用库中使用哪一个库,而是问如何解决大多数决定使用Erlang进行XML处理的人可能遇到的问题。我无法找到解决此问题的现成解决方案,因此我最终做了以下工作: 1) 使用
Erlsom
或Fast XML
Erlang包将XML字符串解析为所谓的简单格式,如以下内容:{“tag”、[{“attr”、“value”}]、“text node”]}
其中子元素可以是包含一个字符串的列表,如示例中所示,或者是嵌套元素的列表
2) 实现我自己的函数,根据给定的路径获取嵌套元素,因为最基本的用法不需要超过50 LOC
3) 实现我自己的XML生成器,因为由于原子问题,
xmerl
无法再次使用。现在,这一部分是相当有争议的,因为它很有可能有一些错误,不支持评论、cdata等等,但是通过使用适当的数据进行一些测试,希望我能够使它足够稳定。我还有什么选择 sweetxml呢?@CallMeNorm A quote->sweetxml是一个很薄的包装:xmerl