Mail MergeとXMLデータソース

Mail Merge操作を実行するときには、XMLファイルを含むさまざまなデータソースを使用できます。 XMLを使用する主な利点は、文書内で階層を定義し、それを単にAspose.Wordsに渡すことができることです。

この記事では、データベースから直接ではなくXMLファイルからデータを読み取り、Mail Merge操作を実行するためのデータソースとしてXMLを含める方法について説明します。

データソースとしてのXMLの利点

XMLデータソースは、データベースのオーバーヘッドなしでデータを格納するのに非常に便利です。 これらは、ユーザーがデータベースに接続できないときにデータを追加、編集、削除する必要があるオフラインアプリケーションに最適です。

XMLデータは、特にwebアプリケーションを使用する場合に、リレーショナルデータベースに代わる優れたデータソースになります。 ほとんどのwebサービスはXMLを使用して情報を交換します。 XML指向データベースは現在の市場で積極的に使用されており、リレーショナルデータベースの開発者は、データベースがXMLを返すように製品にXML互換性を追加してい

XMLはデータをプレーンテキスト形式で格納するため、ストレージはプラットフォームに依存しません。 従って、データは容易に輸出されるか、輸入されるか、または単に動かすことができる。 XMLは、異なるアプリケーション間で通信するときにデータの意味的な意味を保持する方法を提供するため、データソースとして一般的です。

DataSetを使用してXMLのデータをマージテンプレートに入力する

XMLはデータ交換のための普遍的な標準であり、Microsoft Wordドキュメント形式はMail Mergeテンプレートの最も一般的な形式です。 したがって、XMLファイルからWordテンプレート文書にMail Mergeを実行する機能は、一般的な要件となっています。

Microsoft WordはMail Merge操作のデータソースとしてXMLデータを操作する直接的な方法を提供しませんが、Aspose.WordsではXMLデータソースからのデータを使用してMail Merge操作を実行できます。Microsoft WordはMail Merge操作を実行するための直接的な方法を提供しません。 XML文書の構造も変更することができ、データは引き続き正しく読み取られることに注意してください。 これにより、異なるタイプのXMLドキュメントを簡単にマージできます。

ReadXMLメソッドを使用して、XMLスキーマとデータをDataSetオブジェクトに読み込みます。 このオブジェクトは、mail mergeのデータソースとして使用されます。

次のXMLには、マージテンプレートに入力するために必要なデータが含まれています:

<?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にロードし、それをデータソースとして使用する方法を示しています:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// The path to the documents directory.
String dataDir = Utils.getSharedDataDir(XMLMailMerge.class) + "MailMerge/";
// Create the Dataset and read the XML.
DataSet customersDs = new DataSet();
customersDs.readXml(dataDir + "Customers.xml");
String fileName = "TestFile XML.doc";
// Open a template document.
Document doc = new Document(dataDir + fileName);
// Execute mail merge to fill the template with data from XML using DataTable.
// Note that this class also works with a single repeatable region (and any nested regions).
// To merge multiple regions at the same time from a single XML data source, use the XmlMailMergeDataSet class.
// e.g doc.getMailMerge().executeWithRegions(new XmlMailMergeDataSet(xmlData));
doc.getMailMerge().execute(customersDs.getTables().get("Customer"));
// Save the output document.
doc.save(dataDir + fileName);

Mail Merge操作を実行する前に、テンプレートの違いに気付くことができます:

fill_merge_template_from_xml_using_dataset_aspose_words_java

そして、Mail Merge操作を実行した後:

fill_merge_template_from_xml_aspose_words_java