CSV to XML
用于本示例的文件
1 2 3 | Name,Last Name,Street 1,ZipCode 1,Street 2,ZipCode 2 John,Doe,123 Main Street,111,987 Cypress Avenue,222 Jane,Doe,345 Main Street,111,654 Sunset Boulevard,333 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <users> <user> <name></name> <lastName></lastName> <addresses> <address> <street></street> <zipCode></zipCode> </address> <address> <street></street> <zipCode></zipCode> </address> </addresses> </user> <user> <name></name> <lastName></lastName> <addresses> <address> <street></street> <zipCode></zipCode> </address> </addresses> </user> </users> |
这个示例展示了如何将上面显示的CSV文件中的编号字段映射到下面的XML文件中。
将Street1,Street2,IpCode1,ZipCode2 映射到XML<address>元素中的<street> 和<zipCode>,按照以下方式进行映射:
上面的图像显示了三个映射级别,当您单击元素映射时可以看到。
创建示例
1、 首先,使用本例中所提供的文件,创建一个输入类型CSV和输出类型XML的新DataMapper转换器。
2、在输入窗格中,选择Type CSV,并提供样例CSV文件。
3、在Output窗格中,选择Type XML,并提供样例XML文件。
4、在分配输入和输出文件之后,单击Create mapping。数据映射视图应该与下面的图像类似。
正如您所看到的,任何点DataMapper都自动创建了一个名为Foreach“CSV”的顶级映射,并映射了字段名,因为它在输入和输出窗格中是相同的。现在,你可以映射其他的元素,比如Street 1
to street
and Zipcode 1
to zipCode
。
5、现在,将输入Street2映射到Street,并将ZipCode 2映射到ZipCode。最终的映射应该像下面的图像。
要测试您的映射,请使用预览功能完成以下步骤:
1、单击Preview以访问预览窗格。
2、单击Run
生成的输出XML如下所示。
XML to CSV
用于本示例的文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | <employees> <employee> <name>John</name> <lastName>Doe</lastName> <addresses> <address> <street>123 Main Street</street> <zipCode>111</zipCode> </address> <address> <street>987 Cypress Avenue</street> <zipCode>222</zipCode> </address> </addresses> </employee> <employee> <name>Jane</name> <lastName>Doe</lastName> <addresses> <address> <street>345 Main Street</street> <zipCode>111</zipCode> </address> <address> <street>654 Sunset Boulevard</street> <zipCode>333</zipCode> </address> </addresses> </employee> </employees> |
Example CSV File For Output
1 |
Name,Last Name,Street 1,ZipCode 1, Street 2, ZipCode 2 |
为了从XML映射到CSV,我们将使用我们在DataMapper中定义的规则。这些规则使用XPath查询语言来获取XML文档中的节点。使用XPath,规则获取您想要的XML元素的值,并将它们提供给DataMapper。DataMapper将值映射到您在CSV输出文件中定义的任何输出字段。
上面的图像显示了XPath如何检索存储在XML结构中的值。
Creating the Example
1、首先,使用为本例所使用的文件提供的文件,创建一个输入类型XML和输出类型CSV的新DataMapper转换器。
2、在输入窗格中,选择XML。从xml中点击生成模式,并提供样例xml文件。
3、在Output窗格中,选择Type CSV,并提供样例CSV文件
4、在分配输入和输出文件之后,单击Create mapping。数据映射视图应该与下面的图像类似。
正如您所看到的,DataMapper已经自动创建了一个名为 'employees' > 'contacts'
的顶级映射。因为在源XML文档中没有在输出CSV文档中填充行的顶层元素,所以不需要这个映射,事实上,如果留下的话,它将在CSV中生成额外的输出行。
5、通过点击删除top-level mapping,然后通过点击Add Map 图标创建新的映射
6、Studio显示添加映射窗口。将窗口配置为如下表所示。
Window: Add Mapping
在创建新映射之后,DataMapper视图应该与下面的图像类似。
如您所见,DataMapper将顶级输入元素employee映射到联系人,使您能够映射两个之间的子元素。DataMapper还映射了字段名,因为这个字段的名称在输入和输出中是完全相同的。
手动拖动,将输入字段 lastName映射到输出字段 lastName
要将输入XML文件中的地址映射到输出CSV字Street1、Street2等,需要为输入元素地址创建一条规则address : address
.。
要创建规则,右键单击address : address
,然后选择Create Rule based on this element.
ataMapper显示创建一个新的xpath规则窗口。将窗口配置为如下表所示。
Window: Create xpath rule
创建规则后,DataMapper视图应该与下面的图像类似。
正如您所看到的,DataMapper表示规则Street1实际上是用于映射到输出字Street1的。
此时,输出CSV文件如下:
1 2 |
"John","Doe","123 Main Street","","","" "Jane","Doe","345 Main Street","","","" |
我们已经映射了输入XML文件中的第一个雇员的第一个地址的街道。现在,我们必须创建额外的规则来映射其余的地址及其子元素。
按照上面描述的方法创建XPath规则,为地址创建额外的规则address : address
,使用下面表格中提供的值。
一旦您创建了规则,您就将所有输入元素映射到对应的输出元素。DataMapper视图应该与下面的图像类似。
要测试您的映射,请使用预览功能完成以下步骤:
-
Click Preview to go to the Preview pane.
-
In the Input data field, type the path of the input XML file you prepared for this example, or use the ellipsis (…) button to select the file.
-
Click Run.
1 2 3 |
"Name","Last Name","Street 1","ZipCode 1","Street 2","ZipCode 2" "John","Doe","123 Main Street","111","987 Cypress Avenue","222" "Jane","Doe","345 Main Street","111","654 Sunset Boulevard","333" |