4

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 で属性の値を取得するにはどうすればよいですか?

4

3 に答える 3

0

最初に、すべての接続用のドライバーを適切に記述しておく必要があります。xpath ドライバーを使用しない限り、Scriptella で XML を解析することはできません。詳細情報: http://scriptella.org/reference/drivers.html

魔法のビットについて: - 別の可能性として Java ライブラリを使用することもできますが、これら 2 つのドライバーはすぐにサポートされているため、それらを使用することをお勧めします - xml をインポートしたい -> xpath ドライバーが必要です - エクスポートしたいcsv -> csv ドライバーが必要 - テキスト ドライバーを使用して csv データを出力することもできますが、引用符と区切り文字を手動で処理する必要があります

xml データがファイルdata.xmlにあり、ファイルに csv データとしてエクスポートする場合data.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 ソース内で使用されている大文字と小文字を区別してください。は XML ソースに存在するため、 norでは$TITLEなく and を使用する必要があります。$title$Title<TITLE>

このような ETL タスクでは、rownum テストは必要ありません。

于 2016-09-02T10:54:21.543 に答える