JMPの使用法 > データの読み込み > XMLファイルとJSONファイルの読み込み
公開日: 09/19/2023

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ドキュメント(book)には、3つの短いストーリー(story)が含まれており、各ストーリーがそれぞれ1つのデータテーブルです。次の例では、一度にそれらのうちの1つだけを読み込むように選択します。このXMLファイルでは、すべてのテーブルにおいて、1つの段落がテーブル内の1行を表すようにします。段落別のコンテンツの配置は必要ありません。チーズ(cheese)のテーブルは他の2つのテーブルより少し複雑です。このチーズのテーブルを読み込む場合は、「american」や「swiss」など、チーズの種類を含む列を作るとよいでしょう。価格(price)や数量(quantity)の列もあります。さらに、名前は定義されていませんが、<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.29 「行」列で選択された行要素 

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

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

location: 文字

2つのname: 文字(「name」は2つありますが、両方ともで)

price: 数値

quantity: 数値

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最終的なデータテーブル

XML読み込みウィザードでの統計量の表示

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

出現

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

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

書き出し

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

一意

一意の値の個数です。この値は、「書き出し」の値以下となります。

反復

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

サンプル

要素の値です。

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

識別

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

元に戻す

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

やり直し

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

列名の列

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

統計量の列

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

積み重ね

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

読み込みプレビュー

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

ソース表示

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

スクリプト表示

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

XMLファイルを直接読み込む

読み込みウィザードを介さずに、XMLファイルまたはJSONファイルを検出し、データテーブルに直接読み込むこともできます。読み込みウィザードにてデータをプレビューする必要がない場合は、この方法を使用してください。

1. Windows:

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

ファイルの種類を[データファイル]に設定します。

ファイルを選択します。

「開く方法」の横にある[データ(形式を識別)]を選択します。

2. macOS:

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

ウィンドウの左下隅にある[オプション]をクリックします。

[データ(形式を識別)]を選択します。

3. [開く]をクリックします。

ファイルがデータテーブルとして開きます。

期待していた結果が得られなかった場合は、XML読み込みウィザードを使用して読み込み操作をカスタマイズすることを検討してください。XMLデータとJSONデータのプレビューと読み込みを参照してください。

メモ: スクリプトエディタウィンドウからXMLまたはJSONテキストを読み込むには、[編集]>[データとして読み込み]を選択します。ファイル内で何も選択されていない場合は、ファイル拡張子に基づいて読み込まれます。テキストが選択されている場合、JMPはその選択されているテキストを、まずはJSONまたはXMLとして解析しようと試みます。JSONやXMLと判断されなかった場合は、CSV形式のファイルとして読み込みます。

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