---
title: "Mail Merge与XML数据源在C#"
---

执行Mail Merge操作时可以使用各种数据源，包括XML文件。 使用XML的主要优点是能够在文档中定义层次结构，然后简单地将其传递给Aspose.Words。

本文将介绍如何从XML文件而不是直接从数据库中读取数据，并将XML作为数据源来执行Mail Merge操作。

## XML作为数据源的优点

XML数据源对于存储数据非常方便，而不会产生数据库的开销。 它们非常适合离线应用程序，用户需要在无法连接到数据库时添加，编辑和删除数据。

XML数据可以是关系数据库的良好数据源替代方案，特别是在使用web应用程序时。 大多数web服务使用XML来交换信息。 当前市场上积极使用面向XML的数据库，关系数据库的开发人员正在为其产品添加XML兼容性，以获得数据库返回XML。

由于XML以纯文本格式存储数据，因此存储与平台无关。 因此，数据可以很容易地导出、导入或简单地移动。 XML作为数据源很受欢迎，因为它提供了一种在不同应用程序之间进行通信时保留数据语义含义的方法。

## 使用DataSet使用XML中的数据填充合并模板

XML是数据交换的通用标准，Microsoft Word文档格式是Mail Merge模板最流行的格式。 因此，将Mail Merge从XML文件运行到Word模板文档的能力已成为常见要求。

Microsoft Word不提供将XML数据用作Mail Merge操作的数据源的直接方法，而Aspose.Words允许您使用XML数据源中的数据执行Mail Merge操作。 请注意，XML文档的结构也可以改变，数据仍然可以正确读取。 这允许不同类型的XML文档轻松合并。

使用`ReadXML`方法将XML模式和数据读入`DataSet`对象。 然后将此对象用作mail merge的数据源。

```

您可以对不同的数据源使用相同的模板。

```

下面的XML包含填写合并模板所需的数据:

```csharp
<?xml version="1.0" encoding="utf-8"?>
<customers>
	 <customer Name="John Ben Jan" ID="1" Domain="History" City="Boston"/>
 	<customer Name="Lisa Lane" ID="2" Domain="Chemistry" City="LA"/>
	 <customer Name="Dagomir Zits" ID="3" Domain="Heraldry" City="Milwaukee"/>
 	<customer Name="Sara Careira Santy" ID="4" Domain="IT" City="Miami"/>
</customers>
```

下面的代码示例演示如何将XML数据加载到DataSet中，然后将其用作数据源:

{{< gist "aspose-words-gists" "0441f68c5209fec25c47d1a0a203fbb0" "xml-mail-merge.cs" >}}

```

您可以从以下位置下载此示例的示例文件 [Aspose.Words GitHub](https://github.com/aspose-words/Aspose.Words-for-.NET/blob/master/Examples/Data/Mail%20merge%20data%20-%20Customers.xml).

```

在执行Mail Merge操作之前，您可以注意到模板之间的差异:

![fill_merge_template_from_xml_using_dataset](fill-merge-template-from-xml-using-dataset-1.png)

并在执行Mail Merge操作后:

![fill_merge_template_from_xml](fill-merge-template-from-xml-using-dataset-2.png)
