заменить неверный URI в файле .xml - PullRequest
0 голосов
/ 23 января 2019

как я могу заменить недопустимый URI в файле XML, я не могу разобрать файл XML, потому что он выдает ошибку недопустимого URI при попытке проанализировать файл.Как я могу прочитать содержимое файла .xml в строку, чтобы заменить неверный URI.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<Submit xmlns="http://localhost/....">
    <Order>
    <Components>
        <Component>
            <ocode> ABC</ocode>
        </Component>
    </Components>
</Order>
</Submit>
</soap:Body>
</soap:Envelope>

1 Ответ

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

Если вы просто хотите содержимое, используйте SimpleXML и XPath для извлечения содержимого тела ...

$xml=simplexml_load_file("NewFile.xml"); 
$content = $xml->xpath("//soap:Body/*");
echo $content[0]->Order->asXML();

даст ...

<Order>
    <Components>
        <Component>
            <ocode> ABC</ocode>
        </Component>
    </Components>
</Order>

Не уверен, каким должно быть пространство имен http://localhost/...., но это должен быть действительный URI - даже если это http://localhost.

Edit:

Чтобы попытаться исправить URI, вы можете сначала прочитать файл в строку, а затем заменить недопустимую строку действительной ...

$data = file_get_contents("NewFile.xml");
$data = str_replace("http://localhost/....", "http://localhost", $data);
$xml=simplexml_load_string($data);

Или вы также можете попробовать удалить все атрибуты ...

$data = preg_replace("/<Submit.*?>/", "<Submit>", $data);
...