PHP XML 到具有属性和值的数组/对象
Posted
技术标签:
【中文标题】PHP XML 到具有属性和值的数组/对象【英文标题】:PHP XML to Array/Object with Attributes and Values 【发布时间】:2014-10-20 17:40:48 【问题描述】:AI 有一个 XML,其中包含属性和值。我想将它与属性和值一起转换为数组或数组对象。
XML
<?xml version="1.0" encoding="UTF-8"?>
<itemBody>
<div label="options">
<optionchoices optionIdentifier="RESPONSE" shuffle="false" maxOptions="1">
<choice identifier="A1"><![CDATA[aaaa]]></choice>
<choice identifier="A2"><![CDATA[bbbb]]></choice>
<choice identifier="A3"><![CDATA[cccc]]></choice>
</optionchoices>
</div>
</itemBody>
我尝试了两组代码,但结果并不如预期。
代码 1
<?php
$xml = simplexml_load_file('test.xml', 'SimpleXMLElement', LIBXML_NOCDATA);
echo "<pre>";print_r($xml);echo "</pre>"; exit;
?>
输出
SimpleXMLElement Object
(
[div] => SimpleXMLElement Object
(
[@attributes] => Array
(
[label] => options
)
[optionchoices] => SimpleXMLElement Object
(
[@attributes] => Array
(
[optionIdentifier] => RESPONSE
[shuffle] => false
[maxOptions] => 1
)
[choice] => Array
(
[0] => aaaa
[1] => bbbb
[2] => cccc
)
)
)
)
在上面的输出中,如果我们检查然后在选择节点中,我们会得到 values only 而不是属性
代码 2
<?php
$xml = simplexml_load_file('test.xml');
echo "<pre>";print_r($xml);echo "</pre>"; exit;
?>
输出
SimpleXMLElement Object
(
[div] => SimpleXMLElement Object
(
[@attributes] => Array
(
[label] => options
)
[optionchoices] => SimpleXMLElement Object
(
[@attributes] => Array
(
[optionIdentifier] => RESPONSE
[shuffle] => false
[maxOptions] => 1
)
[choice] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[identifier] => A1
)
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[identifier] => A2
)
)
[2] => SimpleXMLElement Object
(
[@attributes] => Array
(
[identifier] => A3
)
)
)
)
)
)
在这个输出中,我们只得到 XML 的属性。
现在我想要的是获取 XML 的属性和值。
请帮忙。
提前致谢。
【问题讨论】:
使用循环。第一个循环第一个 xml 数组以选择 id 作为索引和名称的数组将是第二个索引,然后在相应的索引中循环第二个输出添加属性..$xml->div->attributes()
第一个?根据需要使用循环。
这里有几种用于XML序列化的JSON格式,JsonML,BadgerFish,Rayfish,……你想创建什么样的目标格式?
@Abhishek 你有解决办法吗?
【参考方案1】:
这就是我得到的。这就是我所期望的解决方案。
http://outlandish.com/blog/xml-to-json/
【讨论】:
以上是关于PHP XML 到具有属性和值的数组/对象的主要内容,如果未能解决你的问题,请参考以下文章
使用 databricks 在 Spark(scala) 中生成具有属性和值的 XML