我正在尝试读取zend FW2中的xml文件,但xml阅读器不会从标签中读取属性和值,因此我尝试使用simplexml来读取我的xml文件(这是我第一次写xml文件)xml文件是:
<?xml version="1.0" encoding="UTF-8"?>
<xs:mapping xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:IM-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<xs:serverSide xsi:type="IM-ENC:Array"></xs:serverSide>
<xs:clientSide xsi:type="IM-ENC:Array">
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xs:string">key1</key>
<value xsi:type="xs:string">value1</value>
</item>
<item>
<key xsi:type="xs:string">key2</key>
<value xsi:type="xs:string">value2</value>
</item>
</item>
</xs:clientSide>
</xs:mapping>
以这种方式阅读文件:
<?php
$xml=simplexml_load_file(my.xml);
print_r($xml);
但是结果是空的simpleXMLElement对象,我无法弄清楚我的xml中的错误 你可以提前帮助我吗? 注意: 我使用这个文件本地使用而不是soap,但找不到另一个使用数组的例子,也许这会改变一件事。
答案 0 :(得分:1)
请启用错误报告并粘贴您收到的消息。另外,如Shankar建议的那样,将文件名封装在单引号中:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$xml=simplexml_load_file('my.xml'); // note the quotes
print_r($xml);
错误消息应该为您提供足够的信息以进一步正确调试。如果您需要进一步的帮助,请使用错误消息更新您的问题。
答案 1 :(得分:0)
发现它,我认为xml文件中的错误应该是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<xs:mapping xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:IM-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<serverSide xsi:type="IM-ENC:Array"></serverSide>
<clientSide xsi:type="IM-ENC:Array">
<item xsi:type="ns2:Map">
<item>
<key xsi:type="xs:string">key1</key>
<value xsi:type="xs:string">value1</value>
</item>
<item>
<key xsi:type="xs:string">key2</key>
<value xsi:type="xs:string">value2</value>
</item>
</item>
</clientSide>
</xs:mapping>
如您所见,我刚从标记名称(xs名称空间)中删除了名称空间。事实上,我无法找到解释原因,但它对我有用。 如果有人有解释,请与我们分享。 谢谢所有人帮助我。