Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php文件\u在第三方xml上获取\u内容,标记已损坏_Php_Xml_Tags_Simplexml - Fatal编程技术网

php文件\u在第三方xml上获取\u内容,标记已损坏

php文件\u在第三方xml上获取\u内容,标记已损坏,php,xml,tags,simplexml,Php,Xml,Tags,Simplexml,调用simplexml\u load\u字符串时收到的消息: “警告:simplexml\u load\u string()[函数.simplexml加载字符串]:实体:第216行:解析器错误:中属性mods的规范指令值” 警告:simplexml加载字符串()[函数.simplexml加载字符串]: 总之,有一个带有空格的XML标记,它破坏了一切 因此,使用PHP,我从第三方导入XML,坏的XML标记破坏了整个导入。通过查看每个特定的XML标记,是否有更好的方法读入非XML?或者我至少可以忽略

调用simplexml\u load\u字符串时收到的消息:

“警告:simplexml\u load\u string()[函数.simplexml加载字符串]:实体:第216行:解析器错误:中属性mods的规范指令值”

警告:simplexml加载字符串()[函数.simplexml加载字符串]:

总之,有一个带有空格的XML标记,它破坏了一切

因此,使用PHP,我从第三方导入XML,坏的XML标记破坏了整个导入。通过查看每个特定的XML标记,是否有更好的方法读入非XML?或者我至少可以忽略这些坏标签吗


我想理想情况下,我需要一个
file\u get\u contents
方法来显示XML标记。有什么建议吗?我无法更改第三方XML,因为我从远程服务获得它,我对它没有任何影响。

PHP5.1+允许您解析格式不正确的XML文档,并添加缺少的元素,例如缺少的结束标记

如果您必须解析XML文档,而您对这些文档没有任何影响,那么这将非常有用

要使用此功能,只需在加载XML文档之前将DomDocument属性recover设置为true,然后加载XML文档将始终返回或多或少有用的内容:

$url  = "http://example.com/get-xml.php"; // contains broken XML
$file = file_get_contents($url);
$xml  = simplexml_load_string($file);

这将返回(除了一系列错误,结果仍然会显示)

此处的代码演示:

更新后使xml保持原样:

如果你能使用curl,这应该能达到你的目标。。试试看,让我知道

<?php
$xml = new DomDocument();
$xml->recover=true;
$xml->loadXML('<root><tag>hello world</root>');
print $xml->saveXML();
?>


这是一些有趣的信息,但我看不出它如何帮助我摆脱或忽略XML标记,其中包含一个空格,这会破坏我的导入…如果您不知道空格在什么位置。。您仍然可以使用此函数获取所需的数据。我知道错误发生的位置。我所不知道的是如何修复它。你需要进行正则表达式解析来替换你的空间..检查这个。。它可能会让你知道如何处理抱歉我不清楚。在我的示例中,从file_get_内容中获取字符串后,我拥有所有XML,但没有标记。如果我有权访问正则表达式,我可以很容易地修复它中的坏标记,但以文件内容的工作方式,我甚至从未看到坏的xml标记!请告诉我们您到目前为止尝试了什么。例如,在这个可能重复的问题中,什么对您不起作用:?您还没有在问题中显示损坏的XML。仅仅提供示例URL显然没有提供XML是没有帮助的,因为我们看不到问题所在。DOM旁边还有一个整洁的扩展,它可以解析无效的XML并修复它。
<?php
function curl_get_file_contents($URL)
    {
        $c = curl_init();
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($c, CURLOPT_URL, $URL);
        $contents = curl_exec($c);
        curl_close($c);

        if ($contents) return $contents;
            else return FALSE;
    }
?>