我如何从xml php curl响应中的特定标记中获取数据

qq24tv8q  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(106)

我需要从http POST请求中获取<ns1:value></ns1:value>文本,其正文如下

<?xml version="1.0" encoding="UTF - 8"?>
      <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://roblox.com/RCCServiceSoap" xmlns:ns1="http://roblox.com/" xmlns:ns3="http://roblox.com/RCCServiceSoap12">
      <SOAP-ENV:Body>
          <ns1:OpenJob>
              <ns1:job>
                  <ns1:id>test</ns1:id>
                  <ns1:expirationInSeconds>30</ns1:expirationInSeconds>
                  <ns1:category>0</ns1:category>
                  <ns1:cores>1</ns1:cores>
                  </ns1:job>
                  <ns1:script>
                      <ns1:name>Script</ns1:name>
                      <ns1:script>
                          game.Players:createLocalPlayer(0) 
                          game.Players.LocalPlayer:LoadCharacter() 
  
                          return game:service("ThumbnailGenerator"):click("PNG", 512, 512, true)
                      </ns1:script>
                      <ns1:arguments></ns1:arguments>
                  </ns1:script>
              </ns1:OpenJob>
      </SOAP-ENV:Body>
      </SOAP-ENV:Envelope>

(这是ROBLOX RCCService版本0.3.764.0请求)
我试过使用simplexml_load_string($response),但是没有用。

g2ieeal7

g2ieeal71#

您可以通过使用父磁盘空间Body访问器中的NamespaceSOAP-ENVnsi来访问它。

libxml_use_internal_errors(true);

$ns1 = simplexml_load_string($xml)->children('SOAP-ENV', true)->Body->children('ns1', true);
[$job, $script] = [$ns1->OpenJob->job, $ns1->OpenJob->script];

var_dump($job, $script);

您可以阅读有关docs的更多信息或查看live example on 3v4l.org
这在下面的SO post中也有很好的介绍。

相关问题