このツールの動作
繰り返されている要素を見つけ、その一つ一つを行にします。
<orders>
<order id="1"><customer>Ada</customer><total>42</total></order>
<order id="2"><customer>Alan</customer><total>17</total></order>
</orders>
customer,total,id
Ada,42,1
Alan,17,2
キーが一つだけの外側の包みは自動でたどるので、<orders><order>… に設定は要りません。包みが自分の属性を持つ場合——<orders count="2">——もたどります。その属性は集合についての記述であって行のものではないため、列にはなりません。行に付いた属性は列になります。
属性は列になる
属性に入った識別子も、ほかと同じデータです。@_id は id 列になります。
接頭辞が残るのは一つの場合だけです。同じ名前の子要素がすでにあるときです。<row id="1"><id>x</id></row> は id と @_id の二列になります。中身は別のものであり、一つにまとめれば片方が消えるからです。表を要素だけから作りたいときは、切り替えで属性を丸ごと落とせます。
一行でも表である
記録が一つだけの書き出しも、ほかと同じように変換します。以前はそうでなかったので、書いておく価値があります。XML から JSON への変換は、繰り返されていない要素を配列ではなくオブジェクトにします。配列を必須にしていたために、ごく普通の文書が拒否されていました。
テキストしか含まない根要素は、今も拒否します。値が一つあるだけでは表ではなく、そうでないふりをしても誰の役にも立ちません。
形の揃わない行
見出しは、現れたすべての和集合を初出順に並べたものです。列が欠けている行には空のセルが入ります。
<r><row><a>1</a></row><row><a>2</a><b>3</b></row></r>
a,b
1,
2,3
不揃いな書き出しは普通のことです。余分な列を捨てたり、その列を持たない行を捨てたりすれば、整理のためにデータを失います。
セルが持てないもの
セルが持てるのは一つの値です。要素が部分木を含むときは、勝手に作った列名へ散らすのではなく、その部分木をセルの中に JSON として書きます。見た目は悪いものの正直です。何も失われず、そこに何があったかがそのまま見えます。
プライバシー
すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。