PHP simplexml\u加载\u字符串不工作

PHP simplexml\u加载\u字符串不工作,php,xml,Php,Xml,我从XML文件中检索到一个XML字符串。我无法使用simplexml\u load\u file()直接访问该文件。原因是我必须通过Amazon S3 getObject()来实现这一点。当我echo字符串时,我可以看到输出是一个真正的XML文件。但是,当我尝试使用下面的代码将其加载到XML对象时,它不起作用。变量$s3Data准确地包含给定链接中的XML内容 $xml = simplexml_load_string($s3Data); 我需要你的帮助来解决这个问题。我得到的XML字符串在这里

我从XML文件中检索到一个XML字符串。我无法使用
simplexml\u load\u file()
直接访问该文件。原因是我必须通过Amazon S3 getObject()来实现这一点。当我
echo
字符串时,我可以看到输出是一个真正的XML文件。但是,当我尝试使用下面的代码将其加载到XML对象时,它不起作用。变量
$s3Data
准确地包含给定链接中的XML内容

$xml = simplexml_load_string($s3Data);
我需要你的帮助来解决这个问题。我得到的XML字符串在这里可用

编辑

我创建了XML字符串并进行了测试。现在我得到以下错误。我怎样才能修好这些

警告:simplexml加载字符串()[函数.simplexml加载字符串]: 实体:第12行:解析器错误:输入不正确UTF-8,请指示 编码!字节:C:\Program中的0xEF 0x76 0x65 0x3C Files\Zend\Apache2\htdocs\voxmedia\application\modules\import\controllers\NaiveController.php 在线1458

警告:simplexml加载字符串()[函数.simplexml加载字符串]: 2009年C:\Program中的天真 Files\Zend\Apache2\htdocs\voxmedia\application\modules\import\controllers\NaiveController.php 在线1458

警告:simplexml加载字符串()[函数.simplexml加载字符串]:^ 在C:\程序中 Files\Zend\Apache2\htdocs\voxmedia\application\modules\import\controllers\NaiveController.php 在线1458

好吧,现在我觉得问题在于字符串编码之类的东西。有办法解决这个问题吗


谢谢。

当您
回送一个实际上是对象的变量时,会调用它的()方法将对象转换为字符串,但当您将对象传递给函数时,对象不会被转换

使用:

将$s3Data对象强制转换为字符串

附言:
使用var_dump($s3Data)和var_dump($xml)来调试变量的内容,而不是echo。

当您
echo
一个实际上是对象的变量时,调用其()方法将对象转换为字符串,但当您将对象传递给函数时,对象不会转换

使用:

将$s3Data对象强制转换为字符串

附言:
使用var_dump($s3Data)和var_dump($xml)来调试变量的内容,而不是echo。

我可以通过一个小的解决方法找到问题的答案
simplexml\u load\u string()
连续显示编码错误。所以我使用了
simplexml\u load\u file()
,如下所示。我已将文件保存到本地位置,然后使用
simplexml\u load\u file()
加载


然而,我仍然不明白为什么
simplexml\u load\u string()
不能解析同样的东西。

我可以通过一个小的变通方法找到我问题的答案
simplexml\u load\u string()
连续显示编码错误。所以我使用了
simplexml\u load\u file()
,如下所示。我已将文件保存到本地位置,然后使用
simplexml\u load\u file()
加载


然而,我仍然不明白为什么
simplexml\u load\u string()
不能解析同样的东西。

simplexml\u load\u string
simplexml\u load\u file
都有缺陷,不能很好地处理具有复杂标记的XML。 我尝试了这两个函数来解析一些有效的XMLSOAP响应,但都没有得到错误消息。 我不得不改用
DOMDocument
(工作起来很有魅力)

下面是我们如何检查simplexml的错误(如果您有幸看到错误,而不仅仅是函数返回的“false”)


simplexml\u load\u string
simplexml\u load\u file
都有缺陷,不能很好地处理带有复杂标记的XML。 我尝试了这两个函数来解析一些有效的XMLSOAP响应,但都没有得到错误消息。 我不得不改用
DOMDocument
(工作起来很有魅力)

下面是我们如何检查simplexml的错误(如果您有幸看到错误,而不仅仅是函数返回的“false”)

你应该试试这个:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
simplexml_load_string($result);
你应该试试这个:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
simplexml_load_string($result);

它“不起作用”永远是不够的信息。至少提供错误消息。Hi。没有错误消息。我的代码使用其他XML字符串。请不要考虑文件。假设您有一个php字符串变量,它包含给定URL的内容
$s3Data
是一个字符串变量,它包含给定XML文件中的内容。不要考虑getObject()等等…我用最新的更新修改了我的问题。请检查。它的可能副本看起来像可能的副本。但是他们的答案“utf8\u encode()”对我不起作用。我已经把我自己的答案和我解决它的方式放在一起了。无论如何,谢谢戈登的帮助。这“行不通”永远都不够信息。至少提供错误消息。Hi。没有错误消息。我的代码使用其他XML字符串。请不要考虑文件。假设您有一个php字符串变量,它包含给定URL的内容
$s3Data
是一个字符串变量,它包含给定XML文件中的内容。不要考虑getObject()等等…我用最新的更新修改了我的问题。请检查。它的可能副本看起来像可能的副本。但是他们的答案“utf8\u encode()”对我不起作用。我已经把我自己的答案和我解决它的方式放在一起了。不管怎样,谢谢戈登的帮助。没有一个角色不起作用。我试过了。我的代码使用其他XML字符串。请不要考虑文件。假设您有一个php字符串变量,它包含给定文件的内容;在我的机器上工作,没有任何xml错误。引用OP:我必须通过Amazon S3 getObject()获得此结果。没有强制转换不起作用。我试过了。我的代码使用其他XML字符串。请不要考虑文件。假设您有一个php字符串变量,它包含给定文件的内容;在我的机器上工作,没有任何xml错误。引用OP:
libxml_use_internal_errors(true);
$xml=simplexml_load_string($myXMLData); //or simplexml_load_file

foreach( libxml_get_errors() as $error ) {

    print_r($error);

}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
simplexml_load_string($result);