从返回的 XML 字符串中获取属性

Get attributes from a returned XML string

我正在尝试获取从调用 CEBroker WebServices 返回的 XML 字符串,例如:

<licensees>
    <licensee valid="true" State="FL" licensee_profession="RN" 
        licensee_number="2676612" state_license_format="" first_name="HENRY" last_name="GEITER" ErrorCode="" Message="" TimeStamp="2/18/2022 6:43:20 PM" />
</licensees>

并解析字符串以获取属性值,因为它们始终相同,并且每个字符串只有一个被许可人。 XML 字符串在 $xmlresponse 中返回,当我使用 print_r 打印出来时它是正确的,但是当我尝试解析时,我总是什么也得不到。

我试过了

$xml_string = simplexml_load_string($xmlresponse);
print_r ("this is my xml after going through simplexml_load_string" . $xml_string);

//上面一行没有为$xml_string;

打印任何内容
$json = json_encode($xml_string);
            print_r($json);
            $array = json_decode($json,TRUE);
            echo "<p>Array contents are as follows</p>";
            print_r($array);
            var_dump ($array);
            echo "<p>Array contents ended!</p>";

我是 XML 的新手,只需要知道如何解析节点,在本例中是属性,用于返回的 XML 数据或 XML 文件。

谢谢

如果我对你的问题的理解正确,请尝试以下方法,假设有两个被许可人的回应:

$xmlresponse = '
<licensees>
   <licensee valid="true" State="FL" licensee_profession="RN" licensee_number="2676612" state_license_format="" first_name="HENRY" last_name="GEITER" ErrorCode="" Message="" TimeStamp="2/18/2022 6:43:20 PM" />
   <licensee valid="false" State="NY" licensee_profession="DC" licensee_number="1234" state_license_format="" first_name="JOHN" last_name="DOE" ErrorCode="" Message="" TimeStamp="1/1/2023 6:43:20 PM" />
</licensees>
';
$xml_string = simplexml_load_string($xmlresponse);
$licensees = $xml_string->xpath("//licensee");

foreach ($licensees as $licensee) {
    foreach ($licensee ->xpath('./@*') as $attribute){
    echo $attribute." ";
    }
    echo "\n";
}

输出:

true FL RN 2676612  HENRY GEITER   2/18/2022 6:43:20 PM 
false NY DC 1234  JOHN DOE   1/1/2023 6:43:20 PM 

输出