【问题标题】:Parse XML received from a GET request解析从 GET 请求收到的 XML
【发布时间】:2011-05-31 12:43:40
【问题描述】:

作为学校项目的一部分,我正在调用学校的 api。

方法:GET 响应格式:Xml

现在我使用 curl 发出网络请求。

$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,$url);

curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

$data=curl_exec($ch);

curl_close($ch);

现在我如何解析 xml 输出以获取我想要的数据?

希望问题清楚

【问题讨论】:

标签: php xml dom curl


【解决方案1】:

这取决于内容的确切性质,以及它的结构。

基本方法是使用DOMDocument(或者,simplexml,我不喜欢作为 API)解析文档,然后使用 DOM 遍历或 XPath 来查找所需的内容。

示例可能如下所示:

$dom = new DOMDocument;
$dom->loadXML($data); // data from cURL request

$xpath = new DOMXPath($dom);

$names = $xpath->query('//student/name'); // find all name elements that are direct children of student elements

foreach ($names as $name) {
    echo $name->nodeValue;
}

您想要的确切代码取决于 XML 的结构以及您想要从中获取的内容。

【讨论】:

  • 错误:DOMDocument::loadXML() [domdocument.loadxml]:作为输入提供的空字符串
  • @Saurabh 我猜你提供的是一个空字符串。出于某种原因,您问题中的 cURL 请求未返回数据。修复它,然后再试一次。
  • 设法使它工作。经过数小时的努力,我发现我没有证书可以在我的本地机器上验证,所以如果有人遇到问题,请添加: curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false;
【解决方案2】:

使用SimpleXML:

$xml = simplexml_load_string($data); 

【讨论】:

    【解决方案3】:

    看看SimpleXMLDOMDocumentXMLParserXPath。我通常更喜欢SimpleXML,但人数和意见一样多……

    您会在这个 PHP 类的文档中找到很多示例。

    【讨论】:

      【解决方案4】:

      假设 $data 包含 xml 你可以使用SimpleXML 来解析它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-11
        • 1970-01-01
        • 2023-03-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多