首页 > 解决方案 > 从 XML 子节点检索 OuterXML

问题描述

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

例如,我需要为 test.ssml 中的第一个 speak 标签检索这些数据:

   <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>

索引.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>";
  }

测试.ssml

所有曲目.mp3 书签.dat 测试 1 测试 2

浏览器中的当前输出

当前输出图像

期望的输出

所需的输出图像

标签: phpxmlsimplexml

解决方案


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

$xml=simplexml_load_file($fileName);

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

推荐阅读