Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP子节点_Php_Domdocument - Fatal编程技术网

PHP子节点

PHP子节点,php,domdocument,Php,Domdocument,因此,我尝试遍历一个DOM文档,该文档如下所示: <track rank="1"> <name>Believe</name> <duration>239</duration> <mbid>13194c93-89c6-4ab4-aaf2-15db5d73b74e</mbid> <url>http://www.last.fm/music/Cher/_/Believe<

因此,我尝试遍历一个DOM文档,该文档如下所示:

<track rank="1">
    <name>Believe</name>
    <duration>239</duration>
    <mbid>13194c93-89c6-4ab4-aaf2-15db5d73b74e</mbid>
    <url>http://www.last.fm/music/Cher/_/Believe</url>
    <streamable fulltrack="0">0</streamable>
    <artist>
        <name>Cher</name>
        <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
        <url>http://www.last.fm/music/Cher</url>
    </artist>
</track>

相信
239
13194c93-89c6-4ab4-aaf2-15db5d73b74e
http://www.last.fm/music/Cher/_/Believe
0
雪儿
bfcc6d75-a6a5-4bc6-8282-47aec8531818
http://www.last.fm/music/Cher
使用PHP,我只需执行
$tracks=$xml->getElementsByTagName(“track”)
问题是,对于每一首曲目,我想检索它的名称和持续时间。我知道childNodes属性,但我不习惯将它们全部循环。有没有任何方法可以直接访问它们而不在其子项上使用foreach?

查询('//track')作为$track){
<?php

$doc = new DOMDocument;
$doc->load('example.xml');

$xpath = new DOMXPath($doc);

$tracks = array();

foreach ($xpath->query('//track') as $track) {
  $tracks[] = array(
    'name' => $xpath->evaluate('string(name)', $track),
    'duration' => $xpath->evaluate('number(duration)', $track),
  );
}

print_r($tracks);
$tracks[]=数组( 'name'=>$xpath->evaluate('string(name)',$track), “持续时间”=>$xpath->evaluate('number(持续时间)',$track), ); } 印刷(轨道);
您考虑过SimpleXML吗?这就像
$track_names=$xmlxpath('//track/name')$durations=$xml->xpath('//track/duration')这不起作用,因为我正在创建一个新的SimpleXMLElement。对于每个现有的轨迹,我需要知道它们的值,所以我认为你的方法不适合我。从两个数组生成新的SimpleXMLElement的问题在哪里?