我正在使用PHP并使用simplexml_load_string。我在子节点级别获取值时遇到困难。
$tmpObject=simplexml_load_string("video.xml");
$tmpObject=$tmpObject->xpath("//video-block");
$this->videoObject=array_merge($this->videoObject,$tmpObject);
foreach($this->videoObject as $key => $video) {
echo "$key) Name: ".$video->name."\n";
echo "$key) : ".$video->path."\n";
}
如何从\ video-block \ video-data-structure \ video-player \ media检索高度和文件的值
以下是video.xml内容:
<system-video>
<video-block>
<name>video1</name>
<path>http://mycompany.com</path>
<dynamic-metadata>
<name>Navigation Level</name>
<value>Undefined</value>
</dynamic-metadata>
<video-data-structure>
<video-player>
<player>
<width>505</width>
<height>405</height>
</player>
<media>
<playlistfile/>
<file>playvideo.m4v</file>
<image>http://mycompany.com/jsmith.jpg</image>
<duration/>
<start/>
</media>
</video-player>
</video-data-structure>
</video-block>
<video-block>
<name>video2</name>
<path>http://mycompany.com</path>
<dynamic-metadata>
<name>Navigation Level</name>
<value>Undefined</value>
</dynamic-metadata>
<video-data-structure>
<video-player>
<player>
<width>505</width>
<height>405</height>
</player>
<media>
<playlistfile/>
<file>playvideo2.m4v</file>
<image>http://mycompany.com/Tmatthews.jpg</image>
<duration/>
<start/>
</media>
</video-player>
</video-data-structure>
</video-block>
</system-video>
答案 0 :(得分:1)
要将外部 video.xml 文件作为对象加载,您需要使用simplexml_load_file。
的 PHP
$tmpObject = simplexml_load_file("video.xml");
$tmpObject = $tmpObject->xpath("//video-block");
foreach($tmpObject as $key => $video)
{
$name = $video->name;
$path = $video->path;
$height = $video->{'video-data-structure'}->{'video-player'}->player->height;
$file = $video->{'video-data-structure'}->{'video-player'}->media->file;
echo <<<HEREDOC
{$key})<br>
{$name}<br>
{$path}<br>
{$height}<br>
{$file}<br><br>\n\n
HEREDOC;
}
的输出
0)
video1
http://mycompany.com
405
playvideo.m4v
1)
video2
http://mycompany.com
405
playvideo2.m4v