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)