simplexml_load_string loses the order of tags(Implexml_Load_string丢失标记的顺序)
本文介绍了Implexml_Load_string丢失标记的顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下XML:
<mobapp>
<form>
<input type="text" name="target" id="target" value="" maxlength="8" required="true" pattern="[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"/>
<label for="target"> Phone number</label>
<input type="number" name="amount" id="amount" min="0" maxlength="16" required="true"/>
<label for="amount"> Amount to load:</label>
</form>
</mobapp>
当我使用simplexml_load_string($theXML)
时,我得到以下信息:
object(SimpleXMLElement)#150 (3) {
["input"]=>
array(2) {
[0] => object(SimpleXMLElement)#146 (1) {
["@attributes"]=> [... removed for brevity ...]
}
[1] => object(SimpleXMLElement)#146 (1) {
["@attributes"]=> [... removed for brevity ...]
}
}
["label"]=>
array(2) {
[0] => [... removed for brevity ...]
[1] => [... removed for brevity ...]
}
(我删除了所有属性以便于理解)
所以我得到一个由2个"输入"组成的数组和一个由2个"标签"组成的数组,但我不知道它们在XML中的顺序。
有没有办法拿到那个订单?
推荐答案
不,您不需要。SimpleXML是一个对象,而不是数组;更重要的是,它是一个被设计为用作API的对象,而不是具有固定属性的对象。当您使用所以我得到一个数组...
print_r
、var_dump
或类似的东西时,它将其自身表示为内部带有一串数组的对象,但实际情况并非如此。
它显示这一点的原因是,如果您访问$simplexml_object->input
,您可以按元素出现的顺序循环访问所有<input>
元素,这通常很有用。
但是,要遍历所有元素,而不考虑它们的标记名,请使用the ->children()
method,然后使用the ->getName()
method检查每个元素的名称,例如:
foreach ( $simplexml_object->children() as $node ) {
$tag_name = $node->getName();
$text_content = (string)$node;
}
这篇关于Implexml_Load_string丢失标记的顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:Implexml_Load_string丢失标记的顺序
基础教程推荐
猜你喜欢
- 在 yii2 中迁移时出现异常“找不到驱动程序" 2022-01-01
- 使用 PDO 转义列名 2021-01-01
- phpmyadmin 错误“#1062 - 密钥 1 的重复条目‘1’" 2022-01-01
- 如何在 Symfony 和 Doctrine 中实现多对多和一对多? 2022-01-01
- PHP 守护进程/worker 环境 2022-01-01
- 在 CakePHP 2.0 中使用 Html Helper 时未定义的变量 2021-01-01
- 如何在 XAMPP 上启用 mysqli? 2021-01-01
- 找不到类“AppHttpControllersDB",我也无法使用新模型 2022-01-01
- HTTP 与 FTP 上传 2021-01-01
- Doctrine 2 - 在多对多关系中记录更改 2022-01-01