从 XML 子节点检索外部 XML

Retrieve OuterXML From XML Child Node

我需要为每个说话标签检索 OuterXML。

例如,我需要为 test.ssml 中的第一个发言标签检索此数据:

   <speak xmlns="https://www.w3.org/2001/10/synthesis" version="1.0" xml:lang="en-US">
      <voice name="en-US-GuyNeural">
         <prosody rate="0.00%">Test 1</prosody>
      </voice>
   </speak>

index.php

set_time_limit(0);
require_once('src/Config.php');
$fileName = __DIR__.DIRECTORY_SEPARATOR.'test.ssml';

$fileContent = file_get_contents($fileName);
// $fileContent = preg_replace( "/\r|\n/", "", $fileContent );
$xml=simplexml_load_file($fileName);
$reader = new XMLReader();

foreach($xml->speak as $child)
  {
  echo $child->getName() . " ::: " . htmlspecialchars( $reader->readOuterXml ( $child )  ). "<br>";
  }

test.ssml

所有曲目.mp3 bookmarks.dat 测试 1 测试 2

浏览器中的当前输出

期望的输出

您可以直接使用 SimpleXML 函数 asXML() 获得 XML 而不需要(据我所知) XMLReader.. .

$xml=simplexml_load_file($fileName);

foreach($xml->speak as $child)
{
    echo $child->asXML()."<br />";
}