如何使用 php soapclient 提取价值

发布于 2024-11-04 19:16:59 字数 1239 浏览 4 评论 0原文

我刚刚开始学习使用 PHP SOAPclient 进行编程。我有 以下 xml 文件,我想提取/获取值 rs-1304338811289-11595:

 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <ns2:deliverMDRecordsResponse xmlns:ns2="http://mdstore.data.dnetlib.eu/" xmlns:ns3="http://www.w3.org/2005/08/addressing">
         <return>
             <ns3:Address>http://129.70.212.20:8282/dnet-mdstore/service/MDStoreResultSet</ns3:Address>
             <ns3:ReferenceParameters>
                 <ResourceIdentifier:ResourceIdentifierxmlns:ResourceIdentifier="http://www.driver.org" xmlns:wsa="http://www.w3.org/2005/08/addressing">rs-1304338811289-11595</ResourceIdentifier:ResourceIdentifier>
          </ns3:ReferenceParameters>
-......
         </return>
     </ns2:deliverMDRecordsResponse>
    </soap:Body>
  </soap:Envelope>

    <?php
    $source = 'resourceIdentifier.xml';

    $xml = simplexml_load_string($source);
    $xml->registerXPathNamespace('identifier', 'ns3');
    foreach ($xml->xpath('//identifier:ResourceIdentifier') as $item)
    {
        print_r($item);

    }

    ?>

I have just started learning to program with PHP SOAPclient. I have
the following xml file and I want to extract/get the value
rs-1304338811289-11595:

 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
        <ns2:deliverMDRecordsResponse xmlns:ns2="http://mdstore.data.dnetlib.eu/" xmlns:ns3="http://www.w3.org/2005/08/addressing">
         <return>
             <ns3:Address>http://129.70.212.20:8282/dnet-mdstore/service/MDStoreResultSet</ns3:Address>
             <ns3:ReferenceParameters>
                 <ResourceIdentifier:ResourceIdentifierxmlns:ResourceIdentifier="http://www.driver.org" xmlns:wsa="http://www.w3.org/2005/08/addressing">rs-1304338811289-11595</ResourceIdentifier:ResourceIdentifier>
          </ns3:ReferenceParameters>
-......
         </return>
     </ns2:deliverMDRecordsResponse>
    </soap:Body>
  </soap:Envelope>

    <?php
    $source = 'resourceIdentifier.xml';

    $xml = simplexml_load_string($source);
    $xml->registerXPathNamespace('identifier', 'ns3');
    foreach ($xml->xpath('//identifier:ResourceIdentifier') as $item)
    {
        print_r($item);

    }

    ?>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦罢 2024-11-11 19:16:59

您的 simplexml 命名空间注册语句已损坏:

尝试以下操作:

    <?
    $source=<<<END
        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
      <ns2:deliverMDRecordsResponse xmlns:ns2="http://mdstore.data.dnetlib.eu/" xmlns:ns3="http://www.w3.org/2005/08/addressing">
             <return>
      <ns3:Address>http://129.70.212.20:8282/dnet-mdstore/service/MDStoreResultSet</ns3:Address>
      <ns3:ReferenceParameters>
      <ResourceIdentifier:ResourceIdentifier xmlns:ResourceIdentifier="http://www.driver.org" xmlns:wsa="http://www.w3.org/2005/08/addressing">r\
    s-1304338811289-11595</ResourceIdentifier:ResourceIdentifier>
      </ns3:ReferenceParameters>
             </return>
      </ns2:deliverMDRecordsResponse>
      </soap:Body>
      </soap:Envelope>
    END;
    $xml = simplexml_load_string($source);
    $xml->registerXPathNamespace('t', 'http://www.driver.org');
    foreach ($xml->xpath('//t:ResourceIdentifier') as $item)
    {
      //  print_r($item);
      echo $item->asXML();
    }
?>

Your simplexml namespace registration statement is broken:

Try this:

    <?
    $source=<<<END
        <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
      <soap:Body>
      <ns2:deliverMDRecordsResponse xmlns:ns2="http://mdstore.data.dnetlib.eu/" xmlns:ns3="http://www.w3.org/2005/08/addressing">
             <return>
      <ns3:Address>http://129.70.212.20:8282/dnet-mdstore/service/MDStoreResultSet</ns3:Address>
      <ns3:ReferenceParameters>
      <ResourceIdentifier:ResourceIdentifier xmlns:ResourceIdentifier="http://www.driver.org" xmlns:wsa="http://www.w3.org/2005/08/addressing">r\
    s-1304338811289-11595</ResourceIdentifier:ResourceIdentifier>
      </ns3:ReferenceParameters>
             </return>
      </ns2:deliverMDRecordsResponse>
      </soap:Body>
      </soap:Envelope>
    END;
    $xml = simplexml_load_string($source);
    $xml->registerXPathNamespace('t', 'http://www.driver.org');
    foreach ($xml->xpath('//t:ResourceIdentifier') as $item)
    {
      //  print_r($item);
      echo $item->asXML();
    }
?>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文