在php中处理SOAP web服务响应

在php中处理SOAP web服务响应,php,web-services,soap-client,Php,Web Services,Soap Client,我有运行多年的.NETWeb服务,希望现在能够使用php调用和检索内容。服务将正确返回响应: <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <NewDataSet xmlns=""> <Table diffgr:id="Table1" msdata:rowOr

我有运行多年的.NETWeb服务,希望现在能够使用php调用和检索内容。服务将正确返回响应:

 <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
      <Lang_Country_Region>Chinese - China</Lang_Country_Region>
      <twoLetter>zh-CN</twoLetter>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
      <Lang_Country_Region>Dutch - The Netherlands</Lang_Country_Region>
      <twoLetter>nl-NL</twoLetter>
</Table>
<Table diffgr:id="Table3" msdata:rowOrder="2">
  <Lang_Country_Region>English - United States</Lang_Country_Region>
  <twoLetter>en-US</twoLetter>
</Table>
<Table diffgr:id="Table4" msdata:rowOrder="3">
  <Lang_Country_Region>French - France</Lang_Country_Region>
  <twoLetter>fr-FR</twoLetter>
</Table>
<Table diffgr:id="Table5" msdata:rowOrder="4">
  <Lang_Country_Region>German - Germany</Lang_Country_Region>
  <twoLetter>de-DE</twoLetter>
</Table>
我被困在这里,我正在使用SoapClient打这些电话

如何读取响应中的Soap主体/元素

更新:因此,现在我以以下方式检索数据:

$xml = simplexml_load_string($result->any);
我只是不知道如何解析$xml中存在的内容:

SimpleXMLElement Object ( [NewDataSet] => SimpleXMLElement Object ( 
[Table] => Array ( 
[0] => SimpleXMLElement Object ( [Lang_Country_Region] => Chinese - China [twoLetter] => zh-CN ) 
[1] => SimpleXMLElement Object ( [Lang_Country_Region] => Dutch - The Netherlands [twoLetter] => nl-NL ) 
[2] => SimpleXMLElement Object ( [Lang_Country_Region] => English - United States [twoLetter] => en-US ) 
[3] => SimpleXMLElement Object ( [Lang_Country_Region] => French - France [twoLetter] => fr-FR ) 
[4] => SimpleXMLElement Object ( [Lang_Country_Region] => German - Germany [twoLetter] => de-DE ))))
我如何使用php阅读这篇文章?

解决了它

$count= 0;

foreach ($xml->children() as $values) {
    while($row = $values[$count]) {
        echo $row->Table[$count]->Lang_Country_Region . "<br>";
        echo $row->Table[$count]->twoLetter . "<br>";
        $count = $count + 1;
    }
}
$count=0;
foreach($xml->children()作为$value){
而($row=$values[$count]){
echo$row->Table[$count]->Lang_Country_Region.“
”; echo$row->Table[$count]->两个字母。“
”; $count=$count+1; } }
不确定这是否是正确的方式,希望看到替代方案。但它确实会在没有所有SOAP的情况下输出结果。

解决了这个问题

$count= 0;

foreach ($xml->children() as $values) {
    while($row = $values[$count]) {
        echo $row->Table[$count]->Lang_Country_Region . "<br>";
        echo $row->Table[$count]->twoLetter . "<br>";
        $count = $count + 1;
    }
}
$count=0;
foreach($xml->children()作为$value){
而($row=$values[$count]){
echo$row->Table[$count]->Lang_Country_Region.“
”; echo$row->Table[$count]->两个字母。“
”; $count=$count+1; } }

不确定这是否是正确的方式,希望看到替代方案。但它确实会在不使用所有SOAP的情况下输出结果。

Hi!我换了你的标签;Web服务是由.Net编写的这一事实与您的问题无关。我以前使用过用PHP编写的SOAP Web服务。好吧,我意识到,我是PHP新手,长期使用VB,C#coder。尝试让php检索相同的内容。当然!但您将获得更多有关正确标记的帮助;)不过我不懂php,所以我帮不了你多少忙。你看过现有的库来解析SOAP响应吗?哦,是的,我正在浏览它,这里有一些问题。需要一点碰撞来找出如何打破这个结果。我想我能处理剩下的php。你有没有试过简单地在
foreach($country as$xml)
上迭代并使用
$country->Lang\u CountryRegion
?嗨!我换了你的标签;Web服务是由.Net编写的这一事实与您的问题无关。我以前使用过用PHP编写的SOAP Web服务。好吧,我意识到,我是PHP新手,长期使用VB,C#coder。尝试让php检索相同的内容。当然!但您将获得更多有关正确标记的帮助;)不过我不懂php,所以我帮不了你多少忙。你看过现有的库来解析SOAP响应吗?哦,是的,我正在浏览它,这里有一些问题。需要一点碰撞来找出如何打破这个结果。我认为我可以处理其余的php。您是否尝试过简单地迭代foreach($country as$xml)并使用
$country->Lang\u CountryRegion