我在这里做错了什么?
<?php
$xml=simplexml_load_file("<dict>
<key>ChannelID</key>
<string>example</string>
<key>ChannelDVRs</key>
<array>
<dict>
<key>id</key>
<string>LIVE</string>
<key>name</key>
<string>example1111</string>
<key>description</key>
<string>Live</string>
<key>logoUrl</key>
<string>http://www.example.com/logos/190x110/298.jpg</string>
<key>logoUrlSD</key>
<string>http://www.example.com/logos/190x110/298.jpg</string>
<key>isVOD</key>
<string>false</string>
<key>StreamURL</key>
<string>exampleessssssssssss test</string>
</dict>
</array>
</dict>")
or die("Error: Cannot create object");
foreach ($xml->string as $output) {
echo "$output <br>";
}?>
如果有某种方法可以获得最后一个字符串exampleessssssssssss test
我不需要使用foreach。感谢任何帮助;)
答案 0 :(得分:1)
您需要正确加载XML字符串,然后获取正确的元素。
$xml = simplexml_load_string(
"<dict>
<key>ChannelID</key>
<string>example</string>
<key>ChannelDVRs</key>
<array>
<dict>
<key>id</key>
<string>LIVE</string>
<key>name</key>
<string>example1111</string>
<key>description</key>
<string>Live</string>
<key>logoUrl</key>
<string>http://www.example.com/logos/190x110/298.jpg</string>
<key>logoUrlSD</key>
<string>http://www.example.com/logos/190x110/298.jpg</string>
<key>isVOD</key>
<string>false</string>
<key>StreamURL</key>
<string>exampleessssssssssss test</string>
</dict>
</array>
</dict>")
or die("Error: Cannot create object");
echo end($xml->array->dict->string); //output exampleessssssssssss test
$xml->array->dict->string
是一个数组,因此end()
函数将获得最后一个元素,正如您所希望的那样。
答案 1 :(得分:0)
只是一种替代方案,除了作为<key>StreamURL</key>
之后的元素之外,它不依赖于任何顺序的内容。这确保了如果将来有更改,代码就不会停止工作。
$xml=simplexml_load_string("<dict>
<key>ChannelID</key>
<string>example</string>
<key>ChannelDVRs</key>
<array>
<dict>
<key>id</key>
<string>LIVE</string>
<key>name</key>
<string>example1111</string>
<key>description</key>
<string>Live</string>
<key>logoUrl</key>
<string>http://www.example.com/logos/190x110/298.jpg</string>
<key>logoUrlSD</key>
<string>http://www.example.com/logos/190x110/298.jpg</string>
<key>isVOD</key>
<string>false</string>
<key>StreamURL</key>
<string>exampleessssssssssss test</string>
</dict>
</array>
</dict>")
or die("Error: Cannot create object");
$text = $xml->xpath('//key[text()="StreamURL"]/following-sibling::string/text()');
echo (string)$text[0];
使用XPath,您可以根据元素内容进行搜索,然后选择以下<string>
元素。当xpath()
返回匹配节点列表时,请使用[0]
获取第一个项目。
答案 2 :(得分:0)
将@Felippe Duarte代码更改为使用str_replace回显使用以下代码
$str = end($xml->array->dict->string);
$edited_str = str_replace("exampleessssssssssss","examples",$str);
echo $edited_str;