PHP XML解析删除属性值

PHP XML解析删除属性值,php,xml-parsing,Php,Xml Parsing,我有以下代码: <?php $xml = '<Divisions xmlns="urn:description7a.services.chrome.com"> <responseStatus responseCode="Successful" description="Successful"/> <division id="1">Acura</division> <division

我有以下代码:

<?php

$xml = '<Divisions xmlns="urn:description7a.services.chrome.com">
         <responseStatus responseCode="Successful" description="Successful"/>
         <division id="1">Acura</division>
         <division id="44">Aston Martin</division>
         <division id="4">Audi</division>
         <division id="45">Bentley</division>
         <division id="5">BMW</division>
         <division id="6">Buick</division>
         <division id="7">Cadillac</division>
         <division id="8">Chevrolet</division>
         <division id="9">Chrysler</division>
         <division id="11">Dodge</division>
         <division id="46">Ferrari</division>
         <division id="59">FIAT</division>
         <division id="13">Ford</division>
         <division id="170">Freightliner</division>
         <division id="15">GMC</division>
         <division id="16">Honda</division>
         <division id="17">Hyundai</division>
         <division id="18">Infiniti</division>
         <division id="19">Isuzu</division>
         <division id="20">Jaguar</division>
         <division id="21">Jeep</division>
         <division id="22">Kia</division>
         <division id="47">Lamborghini</division>
         <division id="23">Land Rover</division>
         <division id="24">Lexus</division>
         <division id="25">Lincoln</division>
         <division id="48">Lotus</division>
         <division id="53">Maserati</division>
         <division id="26">Mazda</division>
         <division id="61">McLaren</division>
         <division id="27">Mercedes-Benz</division>
         <division id="2">MINI</division>
         <division id="29">Mitsubishi</division>
         <division id="30">Nissan</division>
         <division id="34">Porsche</division>
         <division id="57">Ram</division>
         <division id="49">Rolls-Royce</division>
         <division id="52">Scion</division>
         <division id="42">Smart</division>
         <division id="37">Subaru</division>
         <division id="56">Tesla</division>
         <division id="39">Toyota</division>
         <division id="40">Volkswagen</division>
         <division id="41">Volvo</division>
      </Divisions>
';

$parse = simplexml_load_string($xml);

print_r($parse);
我将它传递给JSON,所以我需要它保持数组的格式,但需要索引是division ID属性的值。这就是它现在正在输出的内容:

SimpleXMLElement Object ( 
    [responseStatus] => SimpleXMLElement Object ( 
        [@attributes] => Array ( 
            [responseCode] => Successful 
            [description] => Successful 
        ) 
    ) 
    [division] => Array ( 
        [0] => Acura 
        [1] => Aston Martin 
        [2] => Audi 
        [3] => Bentley 
        [4] => BMW 
        [5] => Buick 
        [6] => Cadillac 
        [7] => Chevrolet 
        [8] => Chrysler 
        [9] => Dodge 
        [10] => Ferrari 
        [11] => FIAT 
        [12] => Ford 
        [13] => Freightliner 
        [14] => GMC 
        [15] => Honda 
        [16] => Hyundai 
        [17] => Infiniti 
        [18] => Isuzu 
        [19] => Jaguar 
        [20] => Jeep 
        [21] => Kia 
        [22] => Lamborghini 
        [23] => Land Rover 
        [24] => Lexus 
        [25] => Lincoln 
        [26] => Lotus 
        [27] => Maserati 
        [28] => Mazda 
        [29] => McLaren 
        [30] => Mercedes-Benz 
        [31] => MINI 
        [32] => Mitsubishi 
        [33] => Nissan 
        [34] => Porsche 
        [35] => Ram 
        [36] => Rolls-Royce 
        [37] => Scion 
        [38] => Smart 
        [39] => Subaru 
        [40] => Tesla 
        [41] => Toyota 
        [42] => Volkswagen 
        [43] => Volvo 
    ) 
)

谢谢你的帮助

SimpleXML正在获取您的
元素组,并从中创建一个数组,并根据需要分配索引

您可以做的是在每个
元素中嵌套一个
标记,然后
foreach
通过新的
SimpleXMLObjects
数组获取数据

因此,如果您有如下XML代码:

<divisions>
    <division>
        <id>16</id>
        <name>Honda</name>
    </divsion>
    <division>
        <id>45</id>
        <name>Bently</name>
    </division>
    <division>
        <id>1</id>
        <name>Acura</name>
    </division>
</divisions>
$xml = simplexml_load_file("divisions.xml");
$divisions = array();

foreach($xml as $division)
{
    $divisions[(int)$division->id] = (string)$division->name;
}

var_dump($divisions);

//Var dump will produce an array of...

array (size=3)
  16 => string 'Honda' (length=5)
  45 => string 'Bently' (length=6)
  1 => string 'Acura' (length=5)

这将把所有索引放在正确的位置。

问题在于simplexml\u load\u字符串()。。。它去掉了ID,所以以后做foreach是没有意义的。我试过了,它只在var_转储中返回“”。。这不是来自文件,而是来自字符串。在加载字符串函数之前,我的XML看起来不像你的。。我不能这样输出它,因为我使用的API以我第一篇文章中的格式输出它。我无法控制它的输出方式。
<divisions>
    <division>
        <id>16</id>
        <name>Honda</name>
    </divsion>
    <division>
        <id>45</id>
        <name>Bently</name>
    </division>
    <division>
        <id>1</id>
        <name>Acura</name>
    </division>
</divisions>
$xml = simplexml_load_file("divisions.xml");
$divisions = array();

foreach($xml as $division)
{
    $divisions[(int)$division->id] = (string)$division->name;
}

var_dump($divisions);

//Var dump will produce an array of...

array (size=3)
  16 => string 'Honda' (length=5)
  45 => string 'Bently' (length=6)
  1 => string 'Acura' (length=5)