将XML结果设置为明文,希望在PHP中循环访问它们

Have XML results in plaintext, want to loop through them in PHP

提问人:Andrew G. Johnson 提问时间:1/20/2009 更新时间:1/20/2009 访问量:1415

问:

因此,我正在使用一个以 XML 格式返回结果的 API。为了论证,我们只说我得到了以下回报:

<?xml version="1.0" encoding="UTF-8"?>
<Properties>
    <Property>
        <Name>Joes Crab Shack</Name>
        <Address>111 Shack Street</Address>
    </Property>
    <Property>
        <Name>Johns Shoe Store</Name>
        <Address>123 Shoe Avenue</Address>
    </Property>
</Properties>

现在我正在使用 PHP,并将结果转换为变量。所以基本上会发生这种情况:

$xml_results = '<?xml version="1.0" encoding="UTF-8"?><Properties><Property><Name>Joes Crab Shack</Name><Address>111 Shack Street</Address></Property><Property><Name>Johns Shoe Store</Name><Address>123 Shoe Avenue</Address></Property></Properties>';

现在,我如何将其视为XML文档,例如遍历它并打印出所有属性名称?

PHP XML格式

评论


答:

2赞 driAn 1/20/2009 #1

反序列化为 xml 树,尝试 SimpleXML。这样,您就可以以更方便的方式访问该数据并获取特定的 xml 元素。

评论

1赞 Andrew G. Johnson 1/20/2009
很好的答案,但有示例的答案要好一些。
4赞 Doug G. 1/20/2009 #2

像这样的事情应该可以完成工作。

$request_xml = '<?xml version="1.0" encoding="UTF-8"?>
<Properties>
    <Property>
        <Name>Joes Crab Shack</Name>
        <Address>111 Shack Street</Address>
    </Property>
    <Property>
        <Name>Johns Shoe Store</Name>
        <Address>123 Shoe Avenue</Address>
    </Property>
</Properties>';

$xml = simplexml_load_string($request_xml);

$i = 0;
while ($xml->Property[$i])
{   
    echo $xml->Property[$i]->Name;
    echo $xml->Property[$i]->Address;

    $i++;
}