0

我一定在这里遗漏了一些简单的东西,这让我发疯了。

我正在调用 Web 服务 api 并取回一些 xml:

<?xml version="1.0" encoding="utf-16"?>
<MTSMember xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <LastName>Smith</LastName>
  <FirstName>john</FirstName>
  <MemberNo>xxxxxxxx</MemberNo>
  <Club>None</Club>
  <JoinDate>2013-05-14</JoinDate> 
  <Email>email@email.com</Email>
</MTSMember>

然后我需要处理这个 xml 来获取电子邮件地址。但我只是使用下面的代码得到一个空结果:

$xml_result = simplexml_load_string($xml_string_above);
echo $xml_result->MTSMember[0]->Email;

有人可以指出我正确的方向。我已经阅读了其他几个答案,尝试了各种解决方案,但似乎无法让它发挥作用。

编辑:这是我尝试的最后一个教程http://blog.teamtreehouse.com/how-to-parse-xml-with-php5

4

3 回答 3

2

那应该是:

echo $xml_result->Email;

因为simplexml_load_string()正在加载MTSMember为 main SimpleXMLElement

键盘示例

于 2013-09-06T08:31:13.607 回答
0

尝试这个

$xml=new SimpleXMLElement($str);
$result=$xml->xpath('//Email');
foreach ($result as $Email)
  echo $Email . "<br>";

简单地

$xml=new SimpleXMLElement($str);
echo $xml[0]->Email;

更新:

以下仅用于您的评论,我尝试过的全部内容

$str='<?xml version="1.0" encoding="utf-8"?>
<MTSMember xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <LastName>Smith</LastName>
  <FirstName>john</FirstName>
  <MemberNo>xxxxxxxx</MemberNo>
  <Club>None</Club>
  <JoinDate>2013-05-14</JoinDate> 
  <Email>email@email.com</Email>
</MTSMember>';

$xml=new SimpleXMLElement($str);
echo $xml[0]->Email;
 //OR
$xml=new SimpleXMLElement($str);
$result=$xml->xpath('//Email');
foreach ($result as $Email)
  echo $Email . "<br>";

要开心 :)

于 2013-09-06T08:46:33.243 回答
0

这应该可以正常工作

$xml = new SimpleXMLElement($xml_string_above);

$dc = $xml->email;
echo $dc;
于 2013-09-06T09:22:57.150 回答