【发布时间】:2023-11-12 04:19:01
【问题描述】:
我有一些浏览节点从 Amazon API 返回为 XML,如下所示。我怎样才能穿过这个烂摊子/弄平它并提取出我需要的数据。这是输入:
object(SimpleXMLElement)#72 (1) {
["BrowseNode"]=>
array(2) {
[0]=>
object(SimpleXMLElement)#73 (3) {
["BrowseNodeId"]=>
string(10) "1342630031"
["Name"]=>
string(8) "Chargers"
["Ancestors"]=>
object(SimpleXMLElement)#75 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#76 (3) {
["BrowseNodeId"]=>
string(9) "389516011"
["Name"]=>
string(11) "Accessories"
["Ancestors"]=>
object(SimpleXMLElement)#77 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#78 (3) {
["BrowseNodeId"]=>
string(9) "389514011"
["Name"]=>
string(38) "Sat Nav, GPS, Navigation & Accessories"
["Ancestors"]=>
object(SimpleXMLElement)#79 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#80 (4) {
["BrowseNodeId"]=>
string(6) "560800"
["Name"]=>
string(10) "Categories"
["IsCategoryRoot"]=>
string(1) "1"
["Ancestors"]=>
object(SimpleXMLElement)#81 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#82 (2) {
["BrowseNodeId"]=>
string(6) "560798"
["Name"]=>
string(19) "Electronics & Photo"
}
}
}
}
}
}
}
}
}
[1]=>
object(SimpleXMLElement)#74 (3) {
["BrowseNodeId"]=>
string(9) "340328031"
["Name"]=>
string(12) "Car Chargers"
["Ancestors"]=>
object(SimpleXMLElement)#75 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#76 (3) {
["BrowseNodeId"]=>
string(9) "340327031"
["Name"]=>
string(8) "Chargers"
["Ancestors"]=>
object(SimpleXMLElement)#77 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#78 (3) {
["BrowseNodeId"]=>
string(6) "560826"
["Name"]=>
string(11) "Accessories"
["Ancestors"]=>
object(SimpleXMLElement)#79 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#80 (3) {
["BrowseNodeId"]=>
string(10) "1340509031"
["Name"]=>
string(29) "Mobile Phones & Communication"
["Ancestors"]=>
object(SimpleXMLElement)#81 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#82 (4) {
["BrowseNodeId"]=>
string(6) "560800"
["Name"]=>
string(10) "Categories"
["IsCategoryRoot"]=>
string(1) "1"
["Ancestors"]=>
object(SimpleXMLElement)#83 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#84 (2) {
["BrowseNodeId"]=>
string(6) "560798"
["Name"]=>
string(19) "Electronics & Photo"
}
}
}
}
}
}
}
}
}
}
}
}
}
我想遍历它并将其展平成一个我可以使用的结构,如下所示:
array(
(1342630031,'Chargers'),
(389516011,'Accessories'),
(389514011,'Sat Nav, GPS, Navigation & Accessories'),
(560800,'Categories'),
(560798,'Electronics & Photo'),
(340328031,'Car Chargers'),
(340327031,'Chargers'),
(560826,'Accessories'),
(1340509031,'Mobile Phones & Communication'),
(560800,'Categories'),
(560798,'Electronics & Photo')
)
这样我就可以:
回声 $array[0][0];
回声 $array[0][1];
回声 $array[5][1];
这会给:
1342630031
充电器
电子与照片
等等……
如果有帮助,这里是原始 XML
<?xml version="1.0" encoding="UTF-8"?>
<BrowseNodes>
<BrowseNode>
<BrowseNodeId>1342630031</BrowseNodeId>
<Name>Chargers</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>389516011</BrowseNodeId>
<Name>Accessories</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>389514011</BrowseNodeId>
<Name>Sat Nav, GPS, Navigation & Accessories</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>560800</BrowseNodeId>
<Name>Categories</Name>
<IsCategoryRoot>1</IsCategoryRoot>
<Ancestors>
<BrowseNode>
<BrowseNodeId>560798</BrowseNodeId>
<Name>Electronics & Photo</Name>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
<BrowseNode>
<BrowseNodeId>340328031</BrowseNodeId>
<Name>Car Chargers</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>340327031</BrowseNodeId>
<Name>Chargers</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>560826</BrowseNodeId>
<Name>Accessories</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1340509031</BrowseNodeId>
<Name>Mobile Phones & Communication</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>560800</BrowseNodeId>
<Name>Categories</Name>
<IsCategoryRoot>1</IsCategoryRoot>
<Ancestors>
<BrowseNode>
<BrowseNodeId>560798</BrowseNodeId>
<Name>Electronics & Photo</Name>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</BrowseNodes>
【问题讨论】:
-
DOMDocument (php.net/manual/en/class.domdocument.php) 和 DOMXpath (php.net/manual/en/class.domxpath.php) 是你的朋友
-
我以前没有使用过任何一个。多一点关于从哪里开始的指针会很有用
标签: php xml multidimensional-array flatten