PHP simplexml_load_string和simplexml_load_file使用反斜杠来解析xml

时间:2019-05-08 21:33:01

标签: php xml

PHP 7.1 问题是我有一个格式正确的XML文件。我知道它的格式正确,因为我们正在为客户端生成XML文件,现在唯一的问题是我将其放入XML文件中,而不是从响应中读取它,并且无法将其读回。 要点:

测试返回此错误消息。如您所见,在<字符之前有一个反斜杠字符,我不知道为什么会出现它,因为它不在文件中,而且我100%肯定这是问题所在,因为我总是遇到错误,例如“试图获取属性”非物体”或类似的东西。

[37;41;1m  [PHPUnit_Framework_Exception] simplexml_load_file(): I/O warning : f
ailed to load external entity "\<?xml version="1.0"?>
\<AudioDoc name="JustEat16727D1InHomeRUSHES1" path="JustEat16727D1InHomeRUSHES1.
mp3">
\<ProcList>  [39;49;22m
[37;41;1m

编码我正在使用的内容。很难选择,因为几乎所有内容都可以在Internet上找到。实际上,我需要一个SimpleXMLElement对象。所以我像这样读取文件:

$xml = simplexml_load_string($xmlPath);

$xml = new SimpleXMLElement(file_get_contents($xmlPath));

$xml = simplexml_load_string(file_get_contents($xmlPath));

我尝试了所有方法,然后在代码接收中通过以下代码进行了检查:

$I->assertInstanceOf(SimpleXMLElement::class, $xml, 'Input type is xml');

而且我没有任何错误。 然后在要使用的函数处调用函数,函数标头如下所示:

public static function mergeXml(SimpleXMLElement $xml, $content)

因此,如果它不是SimpleXMLElement,那么它也会在此处引发错误。然后我想使用它,并且出现了上面的错误。

正如我说的那样,当我从响应中获取xml时,此功能可以正常工作,但是由于它是3rdparty API,而且非常慢-例如1.5个小时才能取回XML,因为这是对文本服务的讲话-我不会如果他们在API中没有bug,就根本不在这里-我必须自己从xml文件中进行一些修改。

XML大约为1805kb,但是我不认为这是个问题,因为代码可以用另一种方式读取

所以。这里是否有人可能会想到将XML作为字符串处理的原因是什么?还是\字符的原因是什么?

感谢您的帮助!

0 个答案:

没有答案