Php 为什么可以';simplexml是否读取我的xml文件?
我尝试在zend FW2中读取xml文件,但xml reader不会从标记中同时读取属性和值,因此我尝试使用simplexml读取我的xml文件(这是我第一次编写xml文件)。xml文件是:Php 为什么可以';simplexml是否读取我的xml文件?,php,xml,zend-framework2,Php,Xml,Zend Framework2,我尝试在zend FW2中读取xml文件,但xml reader不会从标记中同时读取属性和值,因此我尝试使用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-instan
<?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>
关键1
价值1
键2
价值2
以这种方式读取文件:
<?php
$xml=simplexml_load_file(my.xml);
print_r($xml);
请启用错误报告并粘贴您收到的消息。此外,按照Shankar的建议,将文件名封装在单引号中:
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$xml=simplexml_load_file('my.xml'); // note the quotes
print_r($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/">
<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>
关键1
价值1
键2
价值2
如您所见,我刚刚从标记名(xs名称空间)中删除了名称空间。事实上,我找不到一个解释,但它对我起了作用。
如果有人解释为什么,请与我们分享。
谢谢大家的帮助。用单引号括起my.xml
。像这样<代码>$xml=simplexml\u加载文件('my.xml')代码>感谢您的回复,我尝试了此操作,但仍然有空对象。请按照我的回答中的建议启用错误,并使用将出现的消息更新您的问题。谢谢。。尝试了您的答案,但回答仍然是“object(simplexmlement)#225(0){}”:(即使您从simplexmlement
查看print\r
的输出,并且它看起来是空的,simplexmlement也不是空的。只是print\r
或var\u dump
不适合Simplexmlement。请改用asXML()
SimpleXMLElement的方法,只输出XML。然后您会发现它根本不是空的。感谢您的快速响应,我已经尝试过了,我得到的结果是:“object(SimpleXMLElement)#225(0){”这是导出的结果,加载很好。您正在加载xml方案文件。您试图完成什么?整个想法是将键标记与值标记映射,这就是为什么我必须加载它并通过xml阅读器读取它。谢谢@Shankar Damodaran