替换 .xml 文件中的无效 URI

replace an invalid URI in the .xml file

如何替换 xml 文件中的无效 URI,我无法解析 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>

如果您只需要内容,请使用 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.

编辑:

要尝试修复 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);