現在の位置: ホーム> 最新記事一覧> PHP操作XMLドキュメント:Xpathクエリとアプリケーションの例分析

PHP操作XMLドキュメント:Xpathクエリとアプリケーションの例分析

gitbox 2025-06-30

導入

XMLドキュメントをPHPで操作する場合、XPathは、開発者がXMLの要素をすばやく見つけて操作するのに役立つ非常に強力なツールです。この記事では、いくつかの例を使用して、XMLドキュメントのクエリにPHPでXPathを使用する方法について説明します。

XMLとXPathの紹介

XML(拡張可能なマークアップ言語)は、データを保存および送信するために一般的に使用されるマークアップ言語です。柔軟な構造を持ち、さまざまなデータ交換シナリオに適しています。 XPathは、XMLドキュメントのノードを見つけるために使用される言語です。パス式を介したノードの位置について説明します。

xpathセレクターを使用します

PHPでは、DOM拡張機能を使用してXMLドキュメントを操作し、XPathを使用してDomxPathクラスを介してノードを照会できます。これが簡単なXMLの例です。

 
<bookstore>
  <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
  </book>
  <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J.K. Rowling</author>
    <year>2003</year>
    <price>29.99</price>
  </book>
  <book category="web">
    <title lang="en">PHP Cookbook</title>
    <author>David Sklar</author>
    <year>2014</year>
    <price>40.00</price>
  </book>
</bookstore>

すべての本ノードを選択します

まず、XPathを使用してすべての本ノードを選択できます。これがこの関数を実装するPHPコードです。

 
$xml = new DOMDocument();
$xml->load('books.xml');
$xpath = new DOMXPath($xml);
$books = $xpath->query('//book');
foreach ($books as $book) {
    // 各本を処理します
}

上記のコードでは、XPath式「// Book」がすべての「ブック」ノードを選択します。その後、「Foreach」ループを使用して、これらのノードを繰り返して処理できます。

特定の属性を持つ本ノードを選択します

次に、特定の属性に基づいてノードを選択できます。たとえば、「料理」のカテゴリですべての本を選択してください。

 
$xpath = new DOMXPath($xml);
$books = $xpath->query('//book[@category="cooking"]');
foreach ($books as $book) {
    // で処理 "cooking" カテゴリの本
}

XPath Expression "// book [@category = 'cooking']"を介して、カテゴリ「調理」を備えたすべての本ノードを選択できます。

特定の子ノードを使用した本ノードを選択します

書籍は、子ノードの存在によってフィルタリングすることもできます。たとえば、「タイトル」の子ノードを含むすべての本を選択します。

 
$xpath = new DOMXPath($xml);
$books = $xpath->query('//book[title]');
foreach ($books as $book) {
    // 処理には "title" 子供のための本
}

このXpath式 "// book [title]"は、少なくとも1つの「タイトル」の子ノードを含むすべての本ノードを選択します。

結論は

XPathを使用すると、開発者はPHPでXMLドキュメントを効率的に操作し、特定の要素をすばやく見つけて除外できます。この記事では、いくつかの一般的なXPathクエリアプリケーションを示しており、PHPとXMLの操作スキルを向上させることを期待しています。