我如何替换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>
答案 0 :(得分:1)
如果只需要内容,请使用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);