2013-06-06 43 views
-3

我想知道如何将XML内容添加到普通数组中,而不添加它作为对象。例如,我有这样的XML:数组而不是SimpleXMLElement数组中的对象PHP?

<example> 
    <n1> 
     <1>I am one</1> 
     <2>I am two</2> 
    </n1> 

    <n2> 
     <1>I am one</1> 
     <2>I am two</2> 
    </n2> 

    <n3> 
     <1>I am one</1> 
     <2>I am two</2> 
    </n3> 
</example> 

我的XML添加到一个变量:

$xml = simplexml_load_file('xlmfile'); 

现在,我创建一个空erray:

$exarray = array(); 

现在,当我想把n3加到$ exarray中,我可以这样做:

array_push($exarray,$xml[2]); 

而现在,当你的print_r($ exarray),你看到这一点:

[0] => SimpleXMLElement Object ([n1] => I am one [n2] => I am two 

所以,这是已被添加到$ exarray一个对象,但可以说你不想对象添加到$ exarray但是一个数组(nr3 = index 2),你怎么能把nr3作为数组添加到$ exarray?另外,如果你最终想要$ exarray是这样的:

[0] => ([n1] => I am one [n2] => I am two) 
[1] => ([n1] => I am one [n2] => I am two) 
[2] => ([n1] => I am one [n2] => I am two) 

Echo $exarray[0][1] to return: I am two 

是可能的吗?

+1

*致命错误:未收到的异常'异常'与消息'字符串不能被解析为XML'* - 请仅发布工作示例。此外[处理将simplexml转换为数组的许多*现有Q&A中的哪一个不适用于您?](http://stackoverflow.com/search?q=%5Bphp%5D+simplexml+to+array)不适用于您?为什么?参考他们中的每一个,你已经尝试到目前为止,*概述详细*哪些部分不适合你,什么阻碍你改变它们以适应你的需求? – hakre

+0

此外你的问题听起来有点像http://stackoverflow.com/questions/16936389/undefined-offset-php-array没有得到答案。这可能是向正确的方向迈进的一步,但另一方面,你也可以尝试改进你之前的问题,以更具体地使你遇到的具体问题变得更加明显。这可能会把它变成一个更好的编程问题,并会给你一个更有用的答案。 – hakre

+0

我不确定是否改变一个问题也会使其恢复。 –

回答

2

是有可能 - 你可以做

$array = json_decode(json_encode((array)simplexml_load_string($xml)),1);

从阵列得到的阵列格式的XML,然后获取数据

0

你可以使用类似

$xml = new SimpleXMLElement($xml); 

foreach ($xml->n1 as $element) { 
     foreach($element as $val) {  
      echo "$val"; 
     } 
    } 

并更改foreach以将值分配给具有计数器的数组。

相关问题