PHP simplexml\u加载\u字符串不工作
我从XML文件中检索到一个XML字符串。我无法使用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字符串在这里
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);