『JMPの使用法』 > データの読み込み > XMLファイルとJSONファイルの読み込み
公開日: 04/01/2021

XMLファイルとJSONファイルの読み込み

XMLファイルまたはJSONファイルのプレビューと読み込み

XML読み込みウィザードでは、XMLファイルやJSONファイルを読み込むことができます。これらのファイルでは、テキストデータが入れ子状になっています。どちらのタイプのファイルも、階層関係を表す入れ子の構造化テキストを含んでいる場合があります。このウィザードを使用すると、値を保持する階層要素や、データテーブルを構築する行を決定する要素を選択できます。

入れ子になったテキストファイルとは、どういうものかを考えてみましょう。たとえば、ドキュメントはいくつかの短いストーリーから成るブックだとします。短いストーリーには複数の章を含むものがありますが、章はなく段落のみのストーリーもあります。各章にはそれぞれいくつかの段落があります。そして、段落には文章があります。以下の例は、そのようなブックの完全なツリーを示しています。

<book>
  <story name="car poll">
    <wheels>4</wheels>
    <para><name>chev</name></para>
    <para><name>ford</name></para>
    <para><name>volk</name></para>
  </story>
  <story name="big class">
    <para><name>ralph</name><height>6</height></para>
    <para><name>billy</name><height>5</height></para>
  </story>
  <story name="cheese" location="NC">
    <chapter name="american">
      <para>1<price>2.00</price><quantity>2</quantity></para>
      <para>2<price>2.10</price><quantity>4</quantity></para>
      <para>3<price>2.20</price><quantity>3</quantity></para>
    </chapter>
    <chapter name="swiss">
      <para>1<price>3.00</price><quantity>3</quantity></para>
      <para>2<price>3.10</price><quantity>2</quantity></para>
    </chapter>
  </story>
</book>

このXMLドキュメント(ブック)には、3つの短いストーリーが含まれており、各ストーリーがそれぞれ1つのデータテーブルです。次の例では、一度にそれらのうちの1つだけを読み込むように選択します。このXMLファイルでは、すべてのテーブルにおいて、1つの段落がテーブル内の1行を表すようにします。他のファイルでは必ずしも段落ごとに1行を作成するとは限りません。チーズのテーブルは他の2つのテーブルより少し複雑です。このチーズのテーブルを読み込む場合は、「american」や「swiss」など、チーズの種類を含む列を作るとよいでしょう。また、価格や数量の列も必要です。さらに、名前は定義されていませんが、<para>の値(1、2、3、1、2)を含める列もあった方がよいかもしれません。行は5つになることが予測されます。最後に、テーブル変数や、場所を表す「NC」を含む列も加えましょう。

JSONファイルは、列見出しとデータとして読み込まれる、名前と値のペアで構成されています。次の例では、各文字列の最初の名前が“Grocery Store Purchases”に追加され、“Grocery Store Purchases.Item”という列見出しになります。“avocado”はテーブルの最初のセルの値になります。次の列の名前は“Grocery Store Purchases.Category”で、“Produce”がその列の最初のセルの値です。

{"Grocery Store Purchases":[
    {"Item":"avocado", "Category":"Produce"},
    {"Item":"bread", "Category":"Bakery"},
    {"Item":"chocolate", "Category":"candy"}
]}

XML読み込みウィザードでXMLファイルまたはJSONファイルを読み込むには

1. [ファイル]>[開く]を選択します。

2. JMPのSamples/Import Dataフォルダを参照します。

3. Windowsでは、ファイルの種類を[XMLデータファイル]に設定します。

4. 「Book.xml」を選択し、[開く]をクリックします。

ファイルがXML読み込みウィザードに表示されます。

注: 「データファイルを開く」ウィンドウで[データ(プレビューを使用)]が選択されているので、XMLファイルは自動的にウィザード内に開きます。XMLファイルとJSONファイルは直接読み込むこともできます。XMLファイルを直接読み込むを参照してください。

データの読み込み方法の決定

1. 「行」列で、データテーブルで新しい行を作成するための要素を選択します。この例では、</para>が処理されたときに行が作成され、その行に対して現在の値を含む列が書き込まれます。

図3.28 「行」列で選択された行要素 

Image shown here

2. 「列」列で、以下の列のデータタイプを選択します。

location: 文字

name: 文字(両方のインスタンス)

price: 数値

quantity: 数値

ヒント: 「サンプル」列の値は、単にそのデータタイプの例を示しています。

図3.29 「列」列に割り当てられたデータタイプ 

Image shown here

3. 「空きを埋める」列で、どの値でセルを埋めるかを指定します。

locationと両方のnameで、「空きを埋める」列の円をクリックし、[+/book/story]を選択します。この設定により、<book>/<story>ノードが再び始まるまで、セルがそれらの値で埋められます。

図3.30 「空きを埋める」列で選択された、空きを埋めるための値 

Image shown here

JMPは、データテーブルに各行を追加するとき、次の行で新しい列値が見つからなかった場合にどうするかを決定します。たとえば、章の名前はチーズの各タイプに対して指定されておらず、「american」と「swiss」の後には欠測値が続きます。

[Use Once]オプションは、値を一度だけ使用し、その後は使用しません。つまり、データが再び与えられない限り、2行目以降は欠測値となります。

[Use Forever]オプションは、次に新しい値が見つかるまでその値を使用します。

この例では、[+/book/story]オプションを選択しています。このオプションは、<book>/<story>を開始するタグが見つかると、JMPは次の<book>/<story>ノードが再び始まるまでセルを埋め続けることを意味します。[-<element>]オプションは、ノードが終了することを示す、要素の終了タグを参照します。

4. 「形式」列では、「price」の横にある[Best]をクリックした後、[固定小数点]を選択し、「小数桁数」に「2」と入力してから、[OK]をクリックします。

図3.31 「形式」列で選択された形式 

Image shown here

5. 「列名」列で、図3.32に表示されているように列の名前を変更します。

図3.32 「列名」列で名前を変更した列 

Image shown here

6. ウィンドウの下部にある[OK]をクリックします。

データが指定通りにデータテーブルに読み込まれます。

図3.33 最終的なデータテーブル 

Image shown here

統計量の表示

XML読み込みウィザードの上部にある[統計量の列]をクリックすると、要素の統計量が表示されます。

出現

要素の出現回数です。ルート要素は一度だけ出現し、通常は行を作成する要素には指定しません。行は、行を作成する要素の出現回数だけ作成されます。

行を作成する要素を複数選択した場合、実際の行数は「出現」の合計回数より少なくなることがあります。これは、ある要素が終了する直後に終了する要素については、余分の行が生成されないためです。たとえば、<para><chapter>を行の作成用に選択した場合、章の終了が最後の段落の直後に来た箇所では、余分の行は生成されません。しかし、最後の段落から章の終了までの間に<chapter><footnote>があった場合には、余分の行が生成されます。ただし、これはfootnoteの列を選択しておいた場合です。

書き出し

ソースに、書き出し可能な値があった回数です。これがゼロであれば、おそらくこの要素からは列を作成しないほうがよいでしょう。なぜなら、値がすべて欠測値になるからです。

一意

一意の値の数(「書き出し」の値以下となる)です。

反復

この要素がその親要素内で反復する最大回数です。反復値が大きいほど、より高い確率で行作成の候補となります。この要素が反復し、かつ列として使用された場合、文字タイプの列はリストを作成します。式タイプの列の場合は、{lists}(波括弧)を使用した形式のリストとなるため、便利です。数値タイプの場合は、1つの列に1つの値が入ります。

サンプル

要素の値です。

XML読み込みウィザードのオプション

識別

このオプションの設定により、行や列の識別が行われます。[縦長(形式を識別)]は、可能な限り多くの行を作成する要素を選択します(デフォルト設定)。[横長(形式を識別)]は、可能な限り多くの列を作成する要素を選択します。[巨大(形式を識別)]は、すべてのデータをテーブルに含めるのに必要な数の要素を選択します。予測したサイズより大きくなる場合があります。

元に戻す

ウィンドウで行った最後の変更内容を元に戻します。

やり直し

ウィンドウで行った最後の変更を再び適用します。

列名の列

「列名」列の表示/非表示を切り替えます。

統計量の列

ツリー内の要素に対する統計量の表示/非表示を切り替えます。

積み重ね

行を作成している親ノード内で繰り返すノードに適用されます。特に設定を変更しない限り、追加の値は、1つのテーブルセルの中でカンマで区切られて保存されます。このオプションを選択した場合、反復値は追加の列に積み重ねられます。

読み込みプレビュー

選択したオプションに応じて、読み込んだデータのプレビューを表示します。

ソース表示

ソースXMLドキュメントを表示します。

スクリプト表示

選択した設定のJSLスクリプトを表示します。

より詳細な情報が必要な場合や、質問があるときは、JMPユーザーコミュニティで答えを見つけましょう (community.jmp.com).