我有一个从XML文件中检索到的XML字符串。我无法使用simplexml_load_file()
直接访问该文件。原因是我必须通过Amazon S3 getObject获取它当我echo
这个字符串时,我可以看到输出是一个真正的XML文件,但是当我试图用下面的代码将它加载到一个XML对象时,它不起作用。变量$s3Data
精确地包含给定链接中的XML内容。
$xml = simplexml_load_string($s3Data);
我需要你的帮助来解决这个问题。我得到的XML字符串可以在这里找到。
http://mediatheques-aphp.bibliomedias.net/12.xml
- 编辑**
我创建了XML字符串并进行了测试。现在我得到了以下错误。我该如何修复这些错误。
警告:简单表达式加载字符串()[函数.简单表达式加载字符串]:实体:第12行:解析器错误:输入不是正确的UTF-8,请指示编码!字节:0xEF 0x76 0x65 0x3C在C中:\程序文件\Zend\Apache2\htdocs\voxmedia\application\modules\import\controllers\NaiveController.php在第1458行
警告:简单表达式加载字符串()[函数.简单表达式加载字符串]:1458行上的C:\程序文件\Zend\Apache2\htdocs\voxmedia\application\modules\import\controllers\NaiveController.php的2009年初级版本
警告:简单表达式加载字符串()[函数.简单表达式加载字符串]:第1458行上的^in C:\程序文件\Zend\Apache2\htdocs\voxmedia\application\modules\import\controllers\NaiveController.php
好的,现在我觉得问题出在字符串编码之类的地方。有什么办法可以解决这个问题吗?
谢谢。
5条答案
按热度按时间s4n0splo1#
simplexml_load_string
和simplexml_load_file
有缺陷,不能很好地处理带有复杂标记的XML。我尝试了这两个函数来解析一些VALID XML SOAP响应,甚至不能得到错误消息。我不得不改用DOMDocument
(工作起来很有魅力)。下面是我们假设如何检查SimpleXML的错误(如果您幸运地看到错误,而不仅仅是从函数返回的“false”)
cqoc49vn2#
我可以找到一个小的变通办法来回答我的问题。
simplexml_load_string()
不断显示编码错误。所以我使用simplexml_load_file()
如下。我已经保存文件到本地位置,然后加载simplexml_load_file()
。然而,我仍然不明白为什么
simplexml_load_string()
不能解析同样的东西。anhgbhbe3#
如果你xml是soap请求的,你可以试试这个
63lcw9qa4#
当你
echo
一个实际上是对象的变量时,它的__toString()方法被调用来将对象转换为字符串,但是当你将对象传递给函数时,对象并没有被转换。use:
将$s3Data对象强制转换为字符串。
PS:使用var_dump($s3Data)和var_dump($xml)来调试变量的内容,而不是使用echo。
bq8i3lrv5#
你应该试试这个: