>  기사  >  백엔드 개발  >  비누에서 반환된 XML을 PHP의 배열로 변환하는 방법

비누에서 반환된 XML을 PHP의 배열로 변환하는 방법

PHPz
PHPz원래의
2023-03-31 09:09:53951검색

웹 서비스를 사용할 때 SOAP를 전송 프로토콜로 사용하면 반환 결과를 XML 형식으로 받게 됩니다. 때로는 이 데이터를 더 편리하게 사용할 수 있도록 이 XML 데이터를 배열로 변환해야 합니다. PHP에서 이 변환은 매우 간단하며 PHP에 내장된 함수를 사용하여 수행할 수 있습니다.

1. SOAP 반환 값의 XML 형식 예

웹 서비스를 사용할 때 일반적으로 SOAP 프로토콜을 통해 요청을 보내고 XML 형식으로 반환 결과를 얻습니다. XML 형식으로 반환된 결과는 복잡할 수 있지만 몇 가지 예를 통해 이해할 수 있습니다. 다음은 SOAP 반환 값의 간단한 XML 형식 예입니다.

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://localhost/webservice.php">
  <SOAP-ENV:Body>
    <ns1:response>
      <ns1:result>
        <name>John Smith</name>
        <age>30</age>
        <country>USA</country>
      </ns1:result>
      <ns1:result>
        <name>Alice Jones</name>
        <age>25</age>
        <country>UK</country>
      </ns1:result>
    </ns1:response>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

위의 XML 코드에는 SOAP 반환 값의 예가 포함되어 있습니다. 루트 노드는 <envelope></envelope>이며, 여기에는 <body></body> 노드, <soap-env :body> 노드에 <code><response></response> 노드가 있고 이 노드에는 두 개의 <result></result> 노드가 있습니다. 각 <result></result> 노드에는 <name></name>, <age></age> <country>의 세 가지 요소 노드가 포함되어 있습니다. ;</country>. <SOAP-ENV:Envelope>,其中包含了一个<SOAP-ENV:Body>节点,<SOAP-ENV:Body>节点里面有一个<ns1:response>节点,这个节点里面有两个<ns1:result>节点。每个<ns1:result>节点包含了三个元素节点:<name><age><country>

这个XML返回值包含了两个人的信息,我们可以通过PHP将它转换成一个数组,方便我们处理这些数据。

二、使用PHP的simplexml_load_string()函数转换XML为数组

在PHP中,我们可以使用内置的simplexml_load_string()函数将XML转化为数组。在上面的XML例子中,我们可以使用以下PHP代码将它转为数组:

$xmlstr = '<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://localhost/webservice.php">
  <SOAP-ENV:Body>
    <ns1:response>
      <ns1:result>
        <name>John Smith</name>
        <age>30</age>
        <country>USA</country>
      </ns1:result>
      <ns1:result>
        <name>Alice Jones</name>
        <age>25</age>
        <country>UK</country>
      </ns1:result>
    </ns1:response>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>';

$xml = simplexml_load_string($xmlstr);
$json = json_encode($xml);
$array = json_decode($json, true);

print_r($array);

在上面的代码中,我们首先将XML字符串复制到$xmlstr变量中,然后使用simplexml_load_string()函数将它转换为一个PHP对象。接下来,我们使用json_encode()json_decode()函数将PHP对象转化为数组,最后使用print_r()函数打印出这个数组。

运行这个代码,我们将会得到以下的输出:

Array
(
    [response] => Array
        (
            [result] => Array
                (
                    [0] => Array
                        (
                            [name] => John Smith
                            [age] => 30
                            [country] => USA
                        )
                    [1] => Array
                        (
                            [name] => Alice Jones
                            [age] => 25
                            [country] => UK
                        )
                )
        )
)

上面的输出展示了一个PHP数组,其中包含了SOAP返回的XML转化后的数据。我们可以非常方便地使用这些数据进行处理。

三、使用PHP的SimpleXMLElement类

除了上面提到的simplexml_load_string()函数,我们还可以使用PHP内置的SimpleXMLElement类来转换XML为数组。

在下面的代码中,我们使用PHP内置的file_get_contents()函数从指定的URL中获取XML数据:

$xmlstr = file_get_contents('http://localhost/webservice.php');

$xml = new SimpleXMLElement($xmlstr);
$json = json_encode($xml);
$array = json_decode($json, true);

print_r($array);

上面的代码中,我们首先使用file_get_contents()函数获取XML数据,然后使用PHP内置的SimpleXMLElement类将XML转化为PHP对象。接下来,我们使用json_encode()json_decode()函数将PHP对象转换为数组,最后使用print_r()

이 XML 반환 값에는 두 사람의 정보가 포함되어 있으며, 이 데이터를 쉽게 처리할 수 있도록 PHP를 통해 배열로 변환할 수 있습니다.

2. PHP의 simplexml_load_string() 함수를 사용하여 XML을 배열로 변환

PHP에 내장된 simplexml_load_string() 함수를 사용하여 XML을 배열로 변환할 수 있습니다. 위 XML 예에서는 다음 PHP 코드를 사용하여 이를 배열로 변환할 수 있습니다.

rrreee

위 코드에서는 먼저 XML 문자열을 $xmlstr 변수에 복사한 다음 simplexml_load_string() 함수는 이를 PHP 객체로 변환합니다. 다음으로 json_encode()json_decode() 함수를 사용하여 PHP 객체를 배열로 변환하고 마지막으로 print_r()를 사용합니다. 이 배열을 인쇄하는 함수입니다. 🎜🎜이 코드를 실행하면 다음 출력이 표시됩니다. 🎜rrreee🎜위 출력은 SOAP에서 반환된 XML 변환 데이터가 포함된 PHP 배열을 보여줍니다. 우리는 이 데이터를 처리에 매우 편리하게 사용할 수 있습니다. 🎜🎜3. PHP의 SimpleXMLElement 클래스를 사용하세요🎜🎜위에서 언급한 simplexml_load_string() 함수 외에도 PHP에 내장된 SimpleXMLElement 클래스를 사용하여 XML을 배열로 변환할 수도 있습니다. 🎜🎜아래 코드에서는 PHP에 내장된 file_get_contents() 함수를 사용하여 지정된 URL에서 XML 데이터를 가져옵니다. 🎜rrreee🎜위 코드에서 먼저 file_get_contents() 함수를 사용하여 XML 데이터를 가져온 다음 PHP에 내장된 SimpleXMLElement 클래스를 사용하여 XML을 PHP 객체로 변환합니다. 다음으로 json_encode()json_decode() 함수를 사용하여 PHP 객체를 배열로 변환하고 마지막으로 print_r()를 사용합니다. 결과를 출력하는 함수입니다. 🎜🎜위 코드는 이전 예제와 매우 유사합니다. 유일한 차이점은 SimpleXMLElement 클래스를 사용하여 XML을 객체로 변환한다는 것입니다. 변환 후에는 이 데이터를 배열처럼 사용할 수 있습니다. 🎜🎜요약🎜🎜이 글에서는 PHP의 내장 함수를 사용하여 SOAP에서 반환된 XML 데이터를 배열로 변환하는 방법을 소개합니다. 이러한 기술을 사용하면 웹 서비스의 반환 값을 더 쉽게 사용할 수 있으므로 개발 및 통합 속도가 빨라집니다. simplexml_load_string() 함수를 사용하든 SimpleXMLElement 클래스를 사용하든 XML을 PHP 배열로 쉽게 변환할 수 있습니다. 🎜

위 내용은 비누에서 반환된 XML을 PHP의 배열로 변환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.