Php 解析类似XML的Web服务(Web服务返回字符串中的XML)

Php 解析类似XML的Web服务(Web服务返回字符串中的XML),php,xml,web-services,Php,Xml,Web Services,我试图解析一个“不太正常”的XML web服务。web服务似乎正在返回一个字符串,该字符串中包含XML XML如下所示: <string> <NewDataSet> <Table> <CATID>0</CATID> <DEPID>0</DEPID> </Table> <Table> <CATID>1</CAT

我试图解析一个“不太正常”的XML web服务。web服务似乎正在返回一个字符串,该字符串中包含XML

XML如下所示:

<string>
  <NewDataSet>
    <Table>
      <CATID>0</CATID>
      <DEPID>0</DEPID>
    </Table>
    <Table>
      <CATID>1</CATID>
      <DEPID>1</DEPID>
    </Table>
  </NewDataSet>
<string>


提前感谢。

如果在回显XML时可以看到它,那么可能需要使用xpath

$id = $xml->xpath('/table/CATID'); 
试试这个

<?php
$k = '<string>
    <NewDataSet>
        <Table>
          <CATID>0</CATID>
          <DEPID>0</DEPID>
        </Table>
        <Table>
          <CATID>1</CATID>
          <DEPID>0</DEPID>
        </Table>
    </NewDataSet>
</string>';
$xml = simplexml_load_string($k);

   foreach($xml->NewDataSet->Table as $read){       
     echo $read->CATID."<br>";
    }
?>

第一步,关闭末尾的标记,并从xml变量“
print\r
”开始

print_r($xml);
因为有父标记和子标记,所以它就像一个
数组
,通过每个字段获得结果

就你而言

<string>
   <NewDataSet>
     <Table>
我想出来了

在使用foreach函数之前,我根据web服务返回的“xml字符串”创建了一个xml文件:

$xml = simplexml_load_string($file);
$feed = '<?xml version="1.0" encoding="ISO-8859-1"?>'.$xml;

file_put_contents("workhorse.xml", $feed);
$myxml=simplexml_load_file("workhorse.xml");
$xml=simplexml\u load\u字符串($file);
$feed=''.$xml;
文件内容(“workhorse.xml”,$feed);
$myxml=simplexml\u load\u文件(“workhorse.xml”);

最后一个结束标记(字符串)写错了(没有/)。这个错误是否存在于源代码中?@Will Irvine你是否检查我的答案对不起,那是我的打字错误。源确实有结束标记。顺便说一句,simplexml\u load\u file将直接加载该XML文件(URL)。不要解析字符串。发生错误。注意:在第16行尝试获取非对象的属性时,我尝试了此操作,但无法使其工作。不过我确实想出来了,看看我的答案。我试过了,但没能成功。不过,我确实找到了答案,请查看我的答案。这在您的示例中确实有效,但使用我的web服务返回则不行。我不知道为什么,但不管我怎么努力,它都不起作用。这里的问题是我必须使用的web服务,而不是你们。:)不过我确实弄明白了,看看我的答案。
0
1
print_r($xml);
<string>
   <NewDataSet>
     <Table>
$tables = $xml->NewDataSet->Table;

foreach ($tables as $table)
{
    foreach ($table->CATID as $catid){
        echo $catid, "\n";
    }
}
$xml = simplexml_load_string($file);
$feed = '<?xml version="1.0" encoding="ISO-8859-1"?>'.$xml;

file_put_contents("workhorse.xml", $feed);
$myxml=simplexml_load_file("workhorse.xml");