为什么simplexml能读取我的xml文件?

时间:2014-04-13 14:02:19

标签: php xml zend-framework2

我正在尝试读取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,但找不到另一个使用数组的例子,也许这会改变一件事。

2 个答案:

答案 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名称空间)中删除了名称空间。事实上,我无法找到解释原因,但它对我有用。 如果有人有解释,请与我们分享。 谢谢所有人帮助我。