Удалить XML-пространства имен в PHP - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь удалить пространства имен xml с помощью php, но мне трудно это сделать.

Например, я хотел бы получить следующий xml-код от удаленного сервера

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
        <data>
            <id>1</id>
            <id>2</id>
            <id>3</id>
        </data>
    </soap:Body>
</soap:Envelope>

для анализа на локальном сервере;

<?xml version="1.0" encoding="utf-8"?>
<data>
    <id>1</id>
    <id>2</id>
    <id>3</id>
</data>

Спасибо.

1 Ответ

0 голосов
/ 15 января 2019

Вы можете легко извлечь данные, используя XPath и SimpleXML, этот код берет строку (она использует file_get_contents, я думаю, что вы получаете ее из cURL) и конвертировать ее в документ XML. Затем использует XPath для извлечения <soap:Body> дочерних узлов (используя //soap:Body/*) - это даст список соответствующих узлов. Для вывода данных он просто использует asXML() ...

$data = file_get_contents("data.xml");
$xml = simplexml_load_string($data);
$body = $xml->xpath("//soap:Body/*");
echo $body[0]->asXML();
...