【PHP8.x】createElementメソッドの使い方

createElementメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

createElementメソッドは、Dom\XMLDocumentクラスに属し、新しいXML要素ノードを作成するメソッドです。このメソッドの主な目的は、XMLドキュメント内に新しい要素をプログラム的に生成することにあります。例えば、<book>という要素や<item>という要素を、コードを通じて動的に作り出す際に利用されます。

メソッドを呼び出す際には、作成したい要素の名前を文字列として引数に指定します。例えば、「book」や「item」といった具体的な要素名を渡します。すると、このメソッドは指定された名前を持つ新しいDOMElementオブジェクトを返します。このDOMElementオブジェクトは、これからXMLドキュメントに追加される要素のひな形となります。

ただし、createElementメソッドが要素を作成しただけでは、その要素はまだXMLドキュメントツリーの一部ではありません。生成された要素を実際にドキュメント内に組み込むためには、appendChildメソッドやinsertBeforeメソッドなど、別のDOM操作メソッドを親ノードに対して呼び出す必要があります。これにより、作成した要素が既存のXML構造の中に適切に配置され、初めてドキュメントの内容が更新されます。

このメソッドを使用することで、既存のXMLドキュメントに新たなデータを追加したり、あるいは完全に新しいXMLドキュメントをゼロから構築したりする際に、必要な構造的要素を柔軟かつ効率的に作成し、管理することが可能になります。

構文(syntax)

1<?php
2
3$document = new Dom\XMLDocument();
4$element = $document->createElement('elementName', 'optionalValue');

引数(parameters)

string $localName

  • string $localName: 生成する要素のローカル名を指定する文字列

戻り値(return)

Dom\Element

指定されたXML文書内に新しい要素ノードを作成し、それを返します。この返された要素オブジェクトは、文書ツリーに追加される前の、独立した要素として扱われます。

サンプルコード

PHPでXML要素を作成する

1<?php
2
3/**
4 * XMLドキュメント内に新しい要素を作成し、XML文字列として出力します。
5 *
6 * Dom\XMLDocument クラスはPHPの標準DOM拡張には存在しません。
7 * PHP 8.0 では DOMDocument クラスがXMLドキュメント操作に用いられます。
8 * この関数では、DOMDocument::createElement の使用方法を示します。
9 *
10 * @param string $rootName 作成するルート要素の名前
11 * @param string $elementName 作成する子要素の名前
12 * @param string $elementValue 子要素に設定するテキスト値
13 * @return string 生成されたXMLドキュメントの文字列
14 */
15function createSimpleXmlElement(string $rootName, string $elementName, string $elementValue): string
16{
17    // 新しいDOMDocumentインスタンスを作成します。
18    // XML バージョンとエンコーディングを指定します。
19    $dom = new DOMDocument('1.0', 'UTF-8');
20
21    // 出力されるXMLを整形するためのオプションです。
22    $dom->formatOutput = true;
23
24    // createElement メソッドを使用してルート要素を作成します。
25    // これは、指定された名前の新しい要素ノードを作成します。
26    // 例: <data></data>
27    $rootElement = $dom->createElement($rootName);
28
29    // ドキュメントのルートにこの要素を追加します。
30    $dom->appendChild($rootElement);
31
32    // createElement メソッドを使用して子要素を作成します。
33    // 例: <item></item>
34    $childElement = $dom->createElement($elementName);
35
36    // 作成した子要素にテキストノードを追加します。
37    // 例: <item>Hello, XML!</item>
38    $childElement->appendChild($dom->createTextNode($elementValue));
39
40    // ルート要素に子要素を追加します。
41    // 例: <data><item>Hello, XML!</item></data>
42    $rootElement->appendChild($childElement);
43
44    // 生成されたXMLドキュメントを文字列として返します。
45    return $dom->saveXML();
46}
47
48// サンプルコードの使用例:
49// 'my_root' をルート要素、'my_item' を子要素、'Example Value' をその値としてXMLを作成します。
50$xmlOutput = createSimpleXmlElement('my_root', 'my_item', 'Example Value');
51echo $xmlOutput;
52

このサンプルコードは、PHPのDOMDocumentクラスを用いて、XMLドキュメント内に新しい要素を作成する方法を示します。createElementメソッドは、指定された名前の新しい要素ノードを生成するために使用されます。引数$localNameには、作成したい要素の名前を文字列で指定します。このメソッドは、生成されたDOMElementオブジェクトを返します。

この例では、まずDOMDocumentクラスのインスタンスを作成し、XMLのバージョンとエンコーディングを指定します。次に、createElementメソッドを使ってルート要素を作成し、appendChildメソッドでドキュメントに追加します。同様に、子要素を作成し、テキストノードを追加してから、ルート要素に追加します。最後に、saveXMLメソッドを使って、生成されたXMLドキュメントを文字列として返します。

サンプルコードでは、createSimpleXmlElement関数を定義し、ルート要素の名前、子要素の名前、子要素に設定するテキスト値を引数として受け取ります。この関数は、これらの引数を使用してXMLドキュメントを作成し、そのXMLドキュメントの文字列を返します。これにより、PHPで簡単にXMLドキュメントを生成し、操作することができます。

createElementメソッドを使う際の注意点です。引数には要素名を文字列で指定します。この要素名はXMLのタグ名として使用されます。大文字小文字は区別されるため、意図したとおりのタグ名になっているか確認してください。また、XMLで許可されていない文字(スペースなど)を使用するとエラーになる場合があります。

createElementメソッドは、あくまで要素ノードを作成するだけで、ドキュメントに追加されるわけではありません。createElementで作成した要素は、appendChildメソッドなどを使って、既存の要素に追加する必要があります。

サンプルコードでは、DOMDocumentオブジェクトのsaveXMLメソッドを使ってXMLを文字列に変換しています。この際、formatOutputプロパティをtrueに設定すると、XMLが整形されて見やすくなります。

PHP DomDocumentで要素を作成する

1<?php
2
3// XMLドキュメントを新規作成
4$dom = new DomDocument('1.0', 'UTF-8');
5
6// ルート要素を作成
7$root = $dom->createElement('root');
8$dom->appendChild($root);
9
10// 新しい要素を作成
11$element = $dom->createElement('element');
12
13// ルート要素に新しい要素を追加
14$root->appendChild($element);
15
16// ドキュメントを整形して表示
17$dom->preserveWhiteSpace = false;
18$dom->formatOutput = true;
19
20echo $dom->saveXML();

PHPのDomDocumentクラスにおけるcreateElementメソッドは、新しい要素ノードを作成するために使用されます。このメソッドは、引数として要素の名前($localName)を表す文字列を受け取ります。作成された要素ノードは、DomElementオブジェクトとして返されます。

上記のサンプルコードでは、まずDomDocumentオブジェクトを新規に作成し、XMLドキュメントのルート要素として'root'という名前の要素を作成し、ドキュメントに追加しています。次に、createElementメソッドを使用して'element'という名前の新しい要素ノードを作成し、それをルート要素の子要素として追加しています。

$dom->createElement('element')の行がcreateElementメソッドの利用箇所です。引数には要素の名前である'element'が渡されています。このメソッドの呼び出しによって、XMLドキュメント内に<element>という要素が生成されます。

最後に、preserveWhiteSpaceプロパティとformatOutputプロパティを設定することで、XMLドキュメントが見やすく整形され、saveXMLメソッドによってXML形式の文字列として出力されます。この例では、createElementメソッドがXMLドキュメントに新しい要素を動的に追加するためにどのように使用されるかを示しています。createElementメソッドを使用することで、複雑なXML構造をプログラム内で柔軟に構築できます。

createElementメソッドは、新しいDom\Elementオブジェクトを作成しますが、これはまだドキュメントに追加されていません。作成した要素は、appendChildなどのメソッドを使って、既存の要素に追加する必要があります。引数$localNameには要素の名前を指定します。XMLの命名規則に従い、不正な文字が含まれていないか注意が必要です。作成された要素は、名前空間を持たない要素として生成されます。名前空間が必要な場合は、createElementNSメソッドを使用してください。XMLドキュメントを操作する際は、文字コードに注意し、UTF-8などの適切なエンコーディングを使用するようにしましょう。