“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 文档(本书)包含三个短篇故事;每个短篇故事都是一个不同的数据表。在下例中,您选择一次仅导入其中一个数据表。这个特定的 XML 文件在所有表中都使用段落来表示某个表中的行。这并不是必须的,任何名称也并不是特殊的。若您想导入 cheese(奶酪)表(它比其他两个表稍微复杂一些),您可能需要一个 variety(品种)列,其中针对每行包含“american”或“swiss”。您可能还需要 price(价格)列和 quantity(数量)列。而且您可能还需要一个列,该列对于 <para> 的 1、2、3、1、2 值没有明确定义的名称。您想要五行。最后,您可能需要一个表变量或一列来表示位置 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> 时将创建行,并使用行的当前值为该行写入列。
在“行”列中选定的行元素
2. 在“列”列中,在“列”圆圈旁边为该列选择数据类型。
‒ 位置:Character
‒ 名称:Character(两种情况下皆如此)
‒ 价格:Numeric
‒ 数量:Numeric
提示:“抽样器”列中的值可让您大致了解应该采用哪种数据类型。
“列”列中分配的数据类型
3. 在“填充”列中,指定要填充单元格的值。
对于位置和两种情况下的名称,请点击“填充”圆圈并选择 +book/story。该设置将使用值填充单元格,直到节点 <book>/<story> 重新开始。
填充在“填充”列中选定的值
将每一行添加到数据表时,若没有为某列找到新值,JMP 将决定对下一行执行的操作。例如,若没有为每种 cheese 指定章节名称,则在“american”和“swiss”之后跟有缺失值。
‒ “使用一次”选项意味着只使用一次该值,之后弃用;若不再次提供数据,则第 2、第 3 和第 5 行将缺失。
‒ “永久填充”选项意味着永远不忘记该值,但是在找到新值时将其替换为新值。
‒ 您选择本例中的 +book/story 选项。该选项表明:若发现打开的 <book>/<story> 元素,JMP 会填充单元格一直到 <book>/<story> 节点重新开始。-<element> 选项引用该元素的结束标记,这将是该节点终止的点。
4. 在“格式”列中,点击 price 旁边的 Best,选择 Fixed Dec,为小数位数键入“2”,然后点击确定。
“格式”列中选定的格式类型
5. 在“列名”列中,按“列名”列中已重命名的列 所示重命名各列。
“列名”列中已重命名的列
6. 在该窗口的底部,点击确定。
数据将按照您的指定导入数据表。
最终数据表
点击“XML 导入向导”顶部的统计量列以显示元素的统计量。
出现次数
元素出现的次数。根元素只出现一次,通常不是从中生成行的元素。您得到的行数将与该元素出现次数相同。
若选择多行,那么实际的行数可能小于“出现”的总次数;在另一个元素结束之后结束的元素不会生成额外的行。例如,若同时将 <para> 和 <chapter> 选作行标记,当这一章就在最后一段之后结束时,就不会有额外一行。但若在最后一段之后及这一章结束之前有一个用于 <chapter> 的 <footnote>,则会得到额外一行。您必须选择脚注列才会出现这种情况。
写入次数
源具有可以写入的值的次数。若该值为零,则您可能不希望从该元素生成列,因为这些值都将缺失。
唯一值数
唯一值的数目(小于或等于“写入”值)。
重复次数
该元素在其父元素中重复的最大次数。较大的重复值可能用于生成行。若该元素重复并用作列,则字符列将生成一个列表;表达式列可能更完善,因为它使用 {lists}(在大括号内)来指示值的停止和开始位置。数值列将只得到其中一个重复值。
抽样器
元素的值。
推测
JMP 根据您选择的数据表的大小选择设置。高型推测选择将生成尽可能多行的元素(默认设置)。宽型推测选择将生成尽可能多列的行的元素。大型推测选择尽可能多的元素来生成它所需的行,以将所有数据放入表中;它可能比您预期的要大。
撤销
撤销上次对该窗口所做的更改。
恢复
重新调用上一次对窗口进行的更改。
名称列
显示或隐藏“列名称”列。
统计量列
显示或隐藏树形结构中的元素的统计量。
堆叠
应用于在要创建行的父节点中重复的节点。默认情况下,额外值存储在由逗号分隔的单个表单元格中。若选定此选项,重复值将堆叠在额外的行中。
导入预览
根据您选择的选项显示导入数据的预览。
源视图
显示源 XML 文档。
脚本视图
显示您选好设置的 JSL 脚本。