Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解析和访问不受信任的XML_Xml_Erlang_Elixir - Fatal编程技术网

解析和访问不受信任的XML

解析和访问不受信任的XML,xml,erlang,elixir,Xml,Erlang,Elixir,我有一种XML转换网关,它接受一种格式的XML,并从我不信任的源生成另一种格式的XML。现在,这些转换可以是琐碎的,比如在这里或那里更改几个属性,也可以是相当复杂的,我需要从头开始分解整个输入并构建输出。所以,基本上我有两个问题: 解析XML。它需要快速(最好)并且在不破坏atoms表的情况下工作(我正在看你,xmerl),因为源代码并不那么可靠 轻松访问深度嵌套的元素以检索重建所需的信息 虽然有一些解析XML的选项,如fast_XML和erlsom库,但它们生成的结构很难访问,因为它们无法与x

我有一种XML转换网关,它接受一种格式的XML,并从我不信任的源生成另一种格式的XML。现在,这些转换可以是琐碎的,比如在这里或那里更改几个属性,也可以是相当复杂的,我需要从头开始分解整个输入并构建输出。所以,基本上我有两个问题:

  • 解析XML。它需要快速(最好)并且在不破坏atoms表的情况下工作(我正在看你,
    xmerl
    ),因为源代码并不那么可靠

  • 轻松访问深度嵌套的元素以检索重建所需的信息

  • 虽然有一些解析XML的选项,如
    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