【发布时间】:2021-10-28 17:36:43
【问题描述】:
我有以下请求,我正在使用 guzzle 来处理它。我正在尝试在key => value 数组中获取 ID 和 NAME,但它似乎不起作用。
$api_url = 'http://example.com/test.asmx/GetUserDetails?userID=123';
$client = new Client();
$results = $client->request('GET', $api_url)->getBody()->getContents();
dd($results);
我echo $results时得到的回复如下图
123EXAMPLE
另外,当我dd($results) 时得到的响应用三引号""" """ 如下所示
"""
<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://example.com">
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:string" minOccurs="0" />
<xs:element name="NAME" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<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">
<ID>123</ID>
<NAME>EXAMPLE</NAME>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
"""
我尝试使用 SimpleXMLElement,但它导致了这个响应 SimpleXMLElement {#642}
$response1 = simplexml_load_string($results);
$response2 = SimpleXMLElement($results);
另外,我使用了json_encode 和json_decode,但都没有奏效。
请,任何帮助表示赞赏。
【问题讨论】:
-
Also, I used json_encode and json_decode...您为什么希望它们使用 XML?这真的没有意义。 -
it resulted in this response SimpleXMLElement {#642}... 请更新您的问题以准确显示您是如何使用它的。听起来你可能只是试图呼应整个外部元素而不深入研究它。有关基本用法的示例,请参阅php.net/manual/en/simplexml.examples-basic.php。 -
The response gotten when I echo $results is shown below 123EXAMPLE...我假设您的意思是您在浏览器中看到了这个?这是因为浏览器将文档的其余部分视为标记(如 HTML - 因为 HTML 是 XML 的子集),因此不会显示它。您所看到的只是 XML 文档中仅有的几段文本。 -
感谢您的更新。您所做的只是加载文档...如果您直接回显这些值,那么是的,您只会得到一个摘要。您需要做的是按照我给您的链接中的示例尝试访问其中的元素。
-
感谢@ADyson 仍然无法通过您提供的链接访问数据。我试过
$response2->diffgr->NewDataSet->NewDataSet->Table->ID但没有回应。我也玩过获取值但没有结果的格式。
标签: php xml xml-namespaces