加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用Scriptella将XML转换为CSV,如何获取属性值?

发布时间:2020-12-16 22:42:57 所属栏目:百科 来源:网络整理
导读:我找到了一个将 XML转换为CSV的示例,在使用的示例中,这个结构 !-- Demo input for ETL --CATALOG CD TITLEEmpire Burlesque/TITLE ARTISTBob Dylan/ARTIST COUNTRYUSA/COUNTRY COMPANYColumbia/COMPANY PRICE10.90/PRICE YEAR1985/YEAR /CD/CATALOG 在这个文
我找到了一个将 XML转换为CSV的示例,在使用的示例中,这个结构

<!-- Demo input for ETL -->
<CATALOG>
    <CD>
        <TITLE>Empire Burlesque</TITLE>
        <ARTIST>Bob Dylan</ARTIST>
        <COUNTRY>USA</COUNTRY>
        <COMPANY>Columbia</COMPANY>
        <PRICE>10.90</PRICE>
        <YEAR>1985</YEAR>
    </CD>
</CATALOG>

在这个文件结构中,Scriptella代码:

<script connection-id="out">Title;Artist;Country;Company;Price;Year</script>
<query connection-id="in">
    <!--XPath which all CD elements in a catalog-->
    /CATALOG/CD
    <!--Outputs all matched elements-->
    <script connection-id="out" if="rownum>1">$TITLE;$ARTIST;$COUNTRY;$COMPANY;$PRICE;$YEAR</script>
</script>

如何转换具有以下结构的XML文件

<CATALOG>
    <CD title='Empire Burlesque' artist='Bob Dylan'  country='USA'/>
    .............
    <CD title='Empire Burlesque' artist='Bob Dylan'  country='USA'/>
</CATALOG>

如何获取XML中的属性值?

解决方法

首先需要为所有连接正确描述驱动程序.除非使用xpath驱动程序,否则无法使用Scriptella解析XML.更多信息: http://scriptella.org/reference/drivers.html

现在为神奇的位:
– 您可以使用Java库作为替代可能性,但由于这两个驱动程序是开箱即用的,我建议使用它们
– 你想导入xml – >需要xpath驱动程序
– 你想导出csv – >需要csv驱动程序
– 文本驱动程序也可用于输出csv数据,但您必须手动处理引用和分隔符

如果您的xml数据位于文件data.xml中,并且您希望将其作为文件data.csv中的csv数据导出,我建议使用以下scriptella etl脚本:

<!DOCTYPE etl SYSTEM "http://scriptella.javaforge.com/dtd/etl.dtd">
<etl>
  <connection id="in" driver="xpath" url="data.xml" />
  <connection id="out" driver="csv" url="data.csv">
    quote=
    separator=;
  </connection>
  <script connection-id="out">
    TITLE,ARTIST,COUNTRY,COMPANY,PRICE,YEAR
  </script>
  <query connection-id="in">
    /CATALOG/CD
    <script connection-id="out">
      $TITLE,$ARTIST,$COUNTRY,$COMPANY,$PRICE,$YEAR
    </script>
  </query>
</etl>

请尊重XML源中使用的案例.你必须使用$TITLE而不是$title或$Title,因为< TITLE>存在于XML源中.

此类ETL任务不需要rownum测试.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读