Php xml的foreach循环

Php xml的foreach循环,php,laravel,Php,Laravel,我在PHP代码中加载了以下xml: <SiteAlarmDetails> <AlertId>89637</AlertId> <SiteCode>20157498</SiteCode> <SiteName>newport</SiteName> </SiteAlarmDetails> $alertXml = simplexml_load_string( $tableAlarm

我在PHP代码中加载了以下xml:

<SiteAlarmDetails>
    <AlertId>89637</AlertId>
    <SiteCode>20157498</SiteCode>
    <SiteName>newport</SiteName>
</SiteAlarmDetails>



$alertXml = simplexml_load_string( $tableAlarm->AlarmDetails);

echo (string) $alertXml->AlertId;  //prints **89637**

在foreach循环中遍历AlertId的方法是否正确?

尝试简单的
foreach
会很有帮助。仅用于访问单个值(例如
AlertId
),您可以使用
$alertXml->AlertId


是否要循环这些
AlertId、SiteCode
foreach($alertXml->children()作为$alerts){print_r($alerts);}
执行此操作时会发生什么?@SahilGulati是。我可能在一个父元素中得到多个childern元素
$alertXml->children()
将返回
AlertId
SiteCode
SiteName
节点的集合。它们都包含纯文本内容。你到底想做什么?@Phil我想在foreach循环中读取我的AlertId。我得到了非常大的XML。我可能会用不同的根元素覆盖多个ALertId。在这里,我提供了一个简单的xml,并询问如何读取ForEach中的警报ID谢谢,如果我想读取特定的密钥(即:ALertId),我应该如何读取它?@Ratha您可以使用
echo$alertXml->ALertId如果我的标记被另一个根标记覆盖(例如:),我应该如何遍历AlertId?@Ratha,您可以使用
XPath
foreach($alertXml->children() as $alerts) 
{
   $alertId = (string)$alerts->AlertId;
   echo $alertId;//I do not see anything
}
<?php
ini_set('display_errors', 1);
$xmlString=<<<XML
<SiteAlarmDetails>
    <AlertId>89637</AlertId>
    <SiteCode>20157498</SiteCode>
    <SiteName>newport</SiteName>
</SiteAlarmDetails>
XML;


$alertXml = simplexml_load_string( $xmlString);
foreach($alertXml as $key => $child)
{
    echo $key ."=".(string)$alertXml->{$key};
    echo PHP_EOL;
}
AlertId=89637
SiteCode=20157498
SiteName=newport