DataMapper Flat-to-Structured and Structured-to-Flat Mapping(官方例子)

本文详细介绍如何使用DataMapper工具实现CSV文件与XML文件之间的相互转换。包括设置输入输出文件类型、创建映射规则及使用XPath进行精确匹配等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CSV to XML

用于本示例的文件

Input CSV File

          
       
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

XML Reference File

          
       
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>,按照以下方式进行映射:


intro-element.mapping



上面的图像显示了三个映射级别,当您单击元素映射时可以看到。

创建示例

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

用于本示例的文件

Input XML File

          
       
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、通过点击remove.map.icon删除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.

create.rule

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视图应该与下面的图像类似。


要测试您的映射,请使用预览功能完成以下步骤:

  1. Click Preview to go to the Preview pane.

  2. 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.

  3. Click Run.

产生的输出CSV文件应该如下:


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"



























































































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值