2015-06-26 30 views
1

我被SOAP API XML性反应就像更改XML响应数组或对象

$data = <users><user id="1028240" enabled="True" mustChangePassword="False"> 
<username><![CDATA[Priye1]]></username> 
<firstName><![CDATA[Priye]]></firstName> 
<middleName></middleName> 
<lastName><![CDATA[Priye]]></lastName> 
<email></email> 
<company></company> 
</users> 

当我通过

$array = simplexml_load_string($data); 

转换$数据转换成简单的XML对象我有对象,但对象不包含任何价值。

变换对象作为遵循

[用户] =>数组 ( [用户] =>数组 ( [0] =>数组 ( [@属性] =>数组 ( 后[ID] => 1028240 [启用] =>真 [mustChangePassword] =>假 )

      [username] => Array 
           (
           ) 

          [firstName] => Array 
           (
           ) 

          [middleName] => Array 
           (
           ) 

          [lastName] => Array 
           (
           ) 

          [email] => Array 
           (
           ) 

          [company] => Array 
           (
           ) 

          [address] => Array 
           (
           ) 

          [city] => Array 
           (
           ) 

          [province] => Array 
           (
           ) 
} 

}

+0

你可以放弃的对象,并添加到这个问题? – arkascha

+0

谢谢,但我很困惑:1.您发布的xml响应的第一个和第二个版本不同。 2.您发布的输出是_not_空。那么这里有什么问题? – arkascha

+0

这个问题的格式可以改进。 – Daniel

回答

2

看起来您的xml输入无效。在这种情况下,如果你没有任何错误检查与不看,其中显示错误日志文件,那么你可能有困难,看到...

下面是一个例子固定内容:

<?php 

$data = <<<EOT 
<users> 
    <user id="1028240" enabled="True" mustChangePassword="False"> 
    <username><![CDATA[Priye1]]></username> 
    <firstName><![CDATA[Priye]]></firstName> 
    <middleName></middleName> 
    <lastName><![CDATA[Priye]]></lastName> 
    <email></email> 
    <company></company> 
    </user> 
</users> 
EOT; 

print_r(simplexml_load_string($data, null, LIBXML_NOCDATA)); 

注添加</user>朝向其封闭user标签在第二行打开的端部。如果没有这种修复,你会在CLI或者日志错误日志文件中得到这个警告:PHP Warning: simplexml_load_string(): Entity: line 9: parser error : expected '>'

此外,您还必须告诉xml解析器应该访问并解释所包含的CDATA内容(如果需要)。这是由于这样的数据实际上不被认为是xml文档本身的一部分。您可以通过使用最后的print_r()调用中显示的标志LIBXML_NOCDATA来实现。

该脚本的输出是:

SimpleXMLElement Object 
(
    [user] => SimpleXMLElement Object 
    (
     [@attributes] => Array 
      (
       [id] => 1028240 
       [enabled] => True 
       [mustChangePassword] => False 
      ) 

     [username] => Priye1 
     [firstName] => Priye 
     [middleName] => SimpleXMLElement Object 
      (
      ) 

     [lastName] => Priye 
     [email] => SimpleXMLElement Object 
      (
      ) 

     [company] => SimpleXMLElement Object 
      (
      ) 

    ) 

) 
+0

@ arkascha感谢您的帮助:) –

+0

很高兴我可以帮助:-)也许你想upvote或接受我的回答:-) – arkascha

+0

@ arkascha谢谢!!,它工作正常。 –