Php 解析类似XML的Web服务(Web服务返回字符串中的XML)
我试图解析一个“不太正常”的XML web服务。web服务似乎正在返回一个字符串,该字符串中包含XML 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
<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");