如何在php中遍历xml

如何在php中遍历xml,php,xml,xml-parsing,Php,Xml,Xml Parsing,我正在使用以下函数 function file_get_contents_curl($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $ur

我正在使用以下函数

function file_get_contents_curl($url) {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_AUTOREFERER, TRUE);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);       

    $data = curl_exec($ch);
    curl_close($ch);

    return $data;
}
$myTestingUrl = file_get_contents_curl("myUrl");
在我运行该函数之后,我

$myTestingUrl =
<?xml version="1.0" encoding="UTF-8"?>
<map>
    <entry key="keyName">
        <entry key="ActionUrl">http://www.my_actionUrl.com/</entry>
    </entry>
</map>
$myTestingUrl=
http://www.my_actionUrl.com/
您能告诉我如何遍历$myTestingUrl以获取条目键“ActionUrl”的内容吗(http://www.my_actionUrl.com/)在php的变量中

谢谢大家!

试试看

$xml = simplexml_load_string($myTestingUrl );
$items = $xml->xpath('/map/entry/entry[@key="ActionUrl"]/text()');
echo $items[0];
试一试


我更喜欢@air4x的XPath方法,但这里它没有XPath-用于显示元素和属性访问:


我更喜欢@air4x的XPath方法,但这里它没有XPath-用于显示元素和属性访问:


好的!下面是关于我收到以下错误的最后一行的更多信息:注意:未定义索引:0从中复制代码,并尝试它是否正常工作。如果它正在工作,那么
echo
您的xml并检查它是否有任何差异。似乎我的服务器禁用了simpleXml。两种解决方案都有效!非常感谢!:)在我的服务器上,只需回显$xml->entry->entry.PHP\u EOL;显示正确的值。很好!下面是关于我收到以下错误的最后一行的更多信息:注意:未定义索引:0从中复制代码,并尝试它是否正常工作。如果它正在工作,那么
echo
您的xml并检查它是否有任何差异。似乎我的服务器禁用了simpleXml。两种解决方案都有效!非常感谢!:)在我的服务器上,只需回显$xml->entry->entry.PHP\u EOL;是显示正确的值。可能重复的可能重复的我得到一个空白页,没有回答这个问题。我已经完成了以下步骤:
echo$myTestingUrl;(打印出来)http://urlllll/library.xml)$obj=simplexml\u load\u字符串($myTestingUrl);foreach($obj->entry as$entry){if(isset($entry->entry)){foreach($entry->entry->attributes()as$key=>$value){if($key=='key'&&&$value=='ActionUrl'){echo'ActionUrl是:'(string)$entry->entry;break 1;}}
@CSSensei如果你在其他代码中一定有错误,这段代码是有效的(如代码板演示中所示)。请查看您的错误日志。我的页面上没有其他用于测试它的代码。在代码板上有trim函数。这是提取工作所必需的吗?请尝试添加类似
simplexml\u load\u字符串(trim($myTestingUrl))的trim
,我在演示中使用了它,因为我在开始xml标记之前添加了一个换行符,这只是为了可读性。似乎我的服务器禁用了simpleXml。这两个解决方案都正常工作!非常感谢!我得到了一个空白页,但没有回答。我完成了以下步骤:
echo$myTestingUrl;(打印出来)http://urlllll/library.xml)$obj=simplexml_load_string($myTestingUrl);foreach($obj->entry as$entry){if(isset($entry->entry)){foreach($entry->entry->attributes()as$key=>value){if($key=='key'&&&$value='ActionUrl'){echo'ActionUrl是:'.(string)$entry->entry->entry;break 1;}}}}
@CSSensei您一定在其他代码中有错误,此代码有效(如代码板演示中所示)。请查看您的错误日志。我的页面上没有其他代码仅用于测试此代码。在代码板上有修剪功能。这是提取工作所必需的吗?请尝试添加类似于
simplexml\u load\u字符串(修剪)的修剪($myTestingUrl))
,我在演示中使用了它,因为我在开始xml标记之前添加了一个换行符,这只是为了可读性。我的服务器似乎禁用了simpleXml。这两种解决方案都正常工作!非常感谢!
$obj = simplexml_load_string($myTestingUrl);

foreach($obj->entry as $entry)
{
    if(isset($entry->entry))
    {
        foreach($entry->entry->attributes() as $key => $value)
        {
            if($key == 'key' && $value == 'ActionUrl')
            {
                echo 'ActionUrl is: ' . (string)$entry->entry;
                break 1;
            }
        }
    }
}