ホームページ >バックエンド開発 >PHPチュートリアル >PHP SimpleXML を使用して内部 XML をフェッチするにはどうすればよいですか?

PHP SimpleXML を使用して内部 XML をフェッチするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-10-28 03:01:02811ブラウズ

How to Fetch Inner XML with PHP SimpleXML?

PHP SimpleXML を使用した内部 XML の取得

XML データを操作する場合、特定の部分を抽出することが重要になる場合があります。一般的なタスクの 1 つは、要素のタグを除いた要素の内部 HTML を取得することです。この記事では、PHP SimpleXML を使用してこれを実現する方法について説明します。

問題のコンテキスト

次の XML について考えてみましょう。

<code class="xml"><qa>
  <question>Who are you?</question>
  <answer>Who who, <strong>who who</strong>, <em>me</em></answer>
</qa></code>

私たちの目標は、「」の内部 HTML を取得することです。

<code class="html">Who who, <strong>who who</strong>, <em>me</em></code>

innerXML 関数を使用した解決策

PHP には、要素の内部 XML にアクセスするための組み込みメソッドが提供されていません。ただし、このニーズを満たすためにカスタム関数を作成できます。そのような関数の 1 つである SimpleXMLElement_innerXML は、以下で定義されています。

<code class="php">function SimpleXMLElement_innerXML($xml)
{
  $innerXML = '';
  foreach (dom_import_simplexml($xml)->childNodes as $child)
  {
    $innerXML .= $child->ownerDocument->saveXML( $child );
  }
  return $innerXML;
}</code>

この関数は、PHP DOM 拡張機能を利用して、SimpleXMLElement ($xml) を DOMNode オブジェクトに変換します。次に、その子ノードを反復処理して、各ノードの XML 表現を $innerXML 文字列に保存します。最後に、$innerXML は要素の内部 HTML を保持します。

使用例

SimpleXMLElement_innerXML 関数を使用するには、次のように記述できます。

<code class="php">$xml = simplexml_load_string('<qa><answer>Who who, <strong>who who</strong>, <em>me</em></answer></qa>');
$innerXML = SimpleXMLElement_innerXML($xml->answer);
echo $innerXML; // Outputs: Who who, <strong>who who</strong>, <em>me</em></code>

結論

SimpleXMLElement_innerXML 関数を使用すると、要素の内部 XML を簡単に取得できます。 DOM 拡張機能を活用することで、XML 操作を正確に制御できるようになります。

以上がPHP SimpleXML を使用して内部 XML をフェッチするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。