【问题标题】:convert the complex XML to CSV file将复杂的 XML 转换为 CSV 文件
【发布时间】:2014-08-07 05:24:47
【问题描述】:

当我尝试通过一些在线工具将以下格式的复杂 XML 转换为 CSV 文件时,它提供了多个 csv 文件?这是拥有以下所有 XML 元素及其属性转换为多个 CSV 的唯一方法吗?或者有什么方法可以在 xml 中创建一个包含以下所有元素和属性的 csv 文件?

XML 示例:

<messages>
<message messageID="12345" orderNumber="1111111" model="AA" tls="22222" status="99" timestamp="2014-04-25 08:27:17Z">
    <attributes>
        <attribute name="aaaaaaaaaa" value="ff" />
        <attribute name="bbbbbbbb" value="L.f" />
        <attribute name="ccccccccc" value="333" />
        <attribute name="ddddddddd" value="n.998" />
    </attributes>
</message>
<message messageID="12345" orderNumber="1111111" model="AA" tls="22222" status="99" timestamp="2014-04-25 08:27:17Z">
    <attributes>
        <attribute name="yyyyyyy" value="j8" />
        <attribute name="jjjjjjjjjj" value="L.O" />
        <attribute name="mmmmmmm" value="33333" />
        <attribute name="nnnnnnnn" value="K.9999" />
    </attributes>
</message>
</messages>

【问题讨论】:

    标签: xml csv converter


    【解决方案1】:

    XML 看起来是合适的格式,因为它是嵌套数据。您还可以使用 JSON 或 YAML。将数据放入单个 CSV 文件的唯一机会是将 &lt;attributes&gt; 展平为如下字符串:

    (aaaaaaaaaa;ff)(bbbbbbbb;L.f)...
    

    但是,这仅在您的数据不包含 (); 或除非您找到其他一些有效的分隔符时才有效。

    那么 CSV 可能如下所示:

    messageID,orderNumber, ... ,attributes
    12345,1111111, ... ,(aaaaaaaaaa;ff)(bbbbbbbb;L.f)...
    

    但这是 hack,普通的 CSV 解析器无法理解这一点。但是,如果您可以控制其他站点上的 CSV 编写器和解析器,则可以使用它。但是,为什么不直接使用 XML(或 JSON、YAML)呢?

    【讨论】:

    • 非常感谢您的快速回复。 any 转成JSON格式就好了,但是我需要检查下游系统是否支持JSON。谢谢。
    【解决方案2】:

    尝试: http://www.deeppay.net/sepa/sepa2csv.html

    它为你做扁平化。属性名称和值将通过:

    在不同的列中 "type",".../@timestamp",".../@status",".../message/@tls",".../@model",".../@orderNumber" ,".../@messageID",".../attribute[3]/type",".../attribute[3]/$",".../attribute[3]/.../ @value",".../attribute[3]/.../@name",".../attribute[2]/type",".../attribute[2]/$",". ../attribute[2]/.../@value",".../attribute[2]/.../@name",".../attribute[1]/type",".. ./attribute[1]/$",".../attribute[1]/.../@value",".../attribute[1]/.../@name","... /attribute[0]/type",".../attribute[0]/$",".../attribute[0]/.../@value",".../attribute[0]/ .../@姓名” "/messages/message","2014-04-25 08:27:17Z","99","22222","AA","1111111","12345","/messages/message/attributes/attribute" ,"","n.998","ddddddddd","/messages/message/attributes/attribute","","333","ccccccccc","/messages/message/attributes/attribute","", "Lf","bbbbbbbb","/messages/message/attributes/attribute","","ff","aaaaaaaaaa" "/messages/message","2014-04-25 08:27:17Z","99","22222","AA","1111111","12345","/messages/message/attributes/attribute" ,"","K.9999","nnnnnnnn","/messages/message/attributes/attribute","","33333","mmmmmmm","/messages/message/attributes/attribute","", "LO","jjjjjjjjjj","/messages/message/attributes/attribute","","j8","yyyyyyy"

    【讨论】:

      【解决方案3】:

      我从 Windows 商店使用了这个应用程序: https://www.microsoft.com/en-us/store/p/xml-into-csv/9p0qsrvjcsj5

      它能够将整个 xml 规范化为平面结构:

      【讨论】:

        【解决方案4】:

        试试:XML to CSV converterconversiontools.io

        它不仅基于XML标签组合数据,还考虑了属性名称。 此外,它还支持最大 20 Gb 的大型 XML 文件。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-12-11
          • 2020-12-09
          • 2017-08-26
          • 1970-01-01
          • 2011-03-05
          • 2015-10-28
          • 2014-11-22
          • 2017-04-18
          相关资源
          最近更新 更多