使用php simplexml从XML显示数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用php simplexml从XML显示数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3257字,纯文字阅读大概需要5分钟。
内容图文
![使用php simplexml从XML显示数据](/upload/InfoBanner/zyjiaocheng/690/f9dea660dbb7474686e3e52f63e1ce90.jpg)
我有一段XML,如下所示
<records count="2">
<record>
<firstname>firstname</firstname>
<middlename>middlename</middlename>
<lastname>lastname</lastname>
<namesuffix/>
<address>
<street-number>demo</street-number>
<street-pre-direction/>
<street-name>demo</street-name>
<street-post-direction/>
<street-suffix>demo</street-suffix>
<city>demo</city>
<state>NY</state>
<zip>demo</zip>
<zip4>demo</zip4>
<county>demo</county>
</address>
<phonenumberdetails>
<phonenumber>demo</phonenumber>
<listed>demo</listed>
<firstname>demo</firstname>
</phonenumberdetails>
<dob day="" month="" year=""/>
<age/>
<date-first month="10" year="1999"/>
<date-last month="04" year="2011"/>
</record>
<record>
<firstname>firstname</firstname>
<middlename>middlename</middlename>
<lastname>lastname</lastname>
<namesuffix/>
<address>
<street-number>demo</street-number>
<street-pre-direction/>
<street-name>demo</street-name>
<street-post-direction/>
<street-suffix>demo</street-suffix>
<city>demo</city>
<state>NY</state>
<zip>demo</zip>
<zip4>demo</zip4>
<county>demo</county>
</address>
<phonenumberdetails>
<phonenumber>demo</phonenumber>
<listed>demo</listed>
<firstname>demo</firstname>
</phonenumberdetails>
<dob day="" month="" year=""/>
<age/>
<date-first month="10" year="1999"/>
<date-last month="04" year="2011"/>
</record>
</records>
现在,我可以使用SimpleXML获取PHP中的所有数据,除了date-first和date-last元素.我一直在使用下面列出的代码
$dateFirst = 'date-first';
$dateLast = 'date-last';
$streetNumber = 'street-number';
$streetPreDirection = 'street-pre-direction';
$streetName = 'street-name';
$streetPostDirection = 'street-post-direction';
$streetSuffix = 'street-suffix';
$unitDesignation = 'unit-designation';
$unitNumber = 'unit-number';
foreach ($reportDataXmlrecords->records->record as $currentRecord) {
echo $currentRecord->$dateFirst['month'].'/'.$currentRecord->$dateFirst['year'];
echo $currentRecord->$dateLast['month'].'/'.$currentRecord->$dateLast['year'];
echo $currentRecord->address->$streetNumber;
$currentRecord->address->$streetName; // ......and so on
}
其中$reportDataXmlrecords是来自父节点的simpleXML对象的一部分
但是前两个回显不打印任何内容,其他所有都正确打印,特别是,我无法访问其中的数据
<date-first month="10" year="1999"/>
<date-last month="04" year="2011"/>
也可以用于调试
print_r($currentRecord->$dateFirst);
它打印
SimpleXMLElement Object (
[@attributes] => Array ( [month] => 10 [year] => 1999 )
)
任何帮助将不胜感激.谢谢.
解决方法:
你的问题是你什么时候做
$currentRecord->$dateFirst['month']
PHP首先尝试将$dateFirst [‘month’]整体评估,然后再尝试将其用作属性
$dateFirst = 'date-first';
var_dump( $dateFirst['month'] ); // gives "d"
因为strings can be accessed by offset with array notation,但非整数偏移量转换为整数,并且由于将’month’强制转换为整数,因此您尝试执行$currentRecord-> d:
$xml = <<< XML
<record>
<date-first month="jan"/>
<d>foo</d>
</record>
XML;
$record = simplexml_load_string($xml);
$var = 'date-first';
echo $record->$var['month']; // foo
您可以使用大括号访问带连字符的属性:
$record->{'date-first'}['month'] // jan
在旁注中,当问题中显示的XML确实是您正在使用SimpleXml加载的XML时,例如当< records>是根节点,然后做
$reportDataXmlrecords->records->record
无法工作,因为$reportDataXmlrecords已经是根节点,如果要遍历其中的记录元素,则必须省略-> records.
内容总结
以上是互联网集市为您收集整理的使用php simplexml从XML显示数据全部内容,希望文章能够帮你解决使用php simplexml从XML显示数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。