我挣扎解析这个XML结构树获取最新XML儿童:从所有同名儿童
<BrowseNodes>
<BrowseNode>
<BrowseNodeId>6388960011</BrowseNodeId>
<Name>Road Bike Frames</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1266090011</BrowseNodeId>
<Name>Bike Frames</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>3403201</BrowseNodeId>
<Name>Cycling</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>706814011</BrowseNodeId>
<Name>Outdoor Recreation</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>3375301</BrowseNodeId>
<Name>Categories</Name>
<IsCategoryRoot>1</IsCategoryRoot>
<Ancestors>
<BrowseNode>
<BrowseNodeId>3375251</BrowseNodeId>
<Name>Sports & Outdoors</Name>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
<BrowseNode>
<BrowseNodeId>11130424011</BrowseNodeId>
<Name>Outdoor Recreation Features</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>3375251</BrowseNodeId>
<Name>Sports & Outdoors</Name>
</BrowseNode>
</Ancestors>
</BrowseNode>
</BrowseNodes>
正如你可以看到,每个子元素具有相同的名称。我见过一些使用Xpath等的例子......但似乎无法将我的头围绕在它周围。此外,我已经尝试过计算孩子,但显然这只是第一级......所以没有骰子。同样只是试图查看所有的孩子(假设$节点是基于上述xml的BrowseNodes)。
理想情况下,我想直接在<IsCategoryRoot>1</IsCategoryRoot>
之下抓取BrowseNode。再次,我的第一个想法是数数孩子,但它坚持在第一级。
foreach($nodes->BrowseNode->children() as $child) {
echo $child->getName() . "<br>";
}
任何帮助表示赞赏。我确定我错过了一些简单的东西。
这里是返回什么时候产品SimpleXML中(记住我已经在这一点SimpleXML对象的工作 - 比如我访问这个作为$ whateverItem-> BrowseNodes:
object(SimpleXMLElement)#6 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#5 (3) {
["BrowseNodeId"]=>
string(7) "3403551"
["Name"]=>
string(19) "Resistance Trainers"
["Ancestors"]=>
object(SimpleXMLElement)#9 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#10 (3) {
["BrowseNodeId"]=>
string(10) "6389526011"
["Name"]=>
string(27) "Bike Trainers & Accessories"
["Ancestors"]=>
object(SimpleXMLElement)#11 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#12 (3) {
["BrowseNodeId"]=>
string(7) "3403201"
["Name"]=>
string(7) "Cycling"
["Ancestors"]=>
object(SimpleXMLElement)#13 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#14 (3) {
["BrowseNodeId"]=>
string(9) "706814011"
["Name"]=>
string(18) "Outdoor Recreation"
["Ancestors"]=>
object(SimpleXMLElement)#15 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#16 (4) {
["BrowseNodeId"]=>
string(7) "3375301"
["Name"]=>
string(10) "Categories"
["IsCategoryRoot"]=>
string(1) "1"
["Ancestors"]=>
object(SimpleXMLElement)#17 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#18 (2) {
["BrowseNodeId"]=>
string(7) "3375251"
["Name"]=>
string(17) "Sports & Outdoors"
}
}
}
}
}
}
}
}
}
}
}
}
object(SimpleXMLElement)#5 (1) {
["BrowseNode"]=>
array(2) {
[0]=>
object(SimpleXMLElement)#3 (3) {
["BrowseNodeId"]=>
string(7) "3403551"
["Name"]=>
string(19) "Resistance Trainers"
["Ancestors"]=>
object(SimpleXMLElement)#11 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#12 (3) {
["BrowseNodeId"]=>
string(10) "6389526011"
["Name"]=>
string(27) "Bike Trainers & Accessories"
["Ancestors"]=>
object(SimpleXMLElement)#13 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#14 (3) {
["BrowseNodeId"]=>
string(7) "3403201"
["Name"]=>
string(7) "Cycling"
["Ancestors"]=>
object(SimpleXMLElement)#15 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#16 (3) {
["BrowseNodeId"]=>
string(9) "706814011"
["Name"]=>
string(18) "Outdoor Recreation"
["Ancestors"]=>
object(SimpleXMLElement)#17 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#18 (4) {
["BrowseNodeId"]=>
string(7) "3375301"
["Name"]=>
string(10) "Categories"
["IsCategoryRoot"]=>
string(1) "1"
["Ancestors"]=>
object(SimpleXMLElement)#19 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#20 (2) {
["BrowseNodeId"]=>
string(7) "3375251"
["Name"]=>
string(17) "Sports & Outdoors"
}
}
}
}
}
}
}
}
}
}
}
[1]=>
object(SimpleXMLElement)#10 (3) {
["BrowseNodeId"]=>
string(11) "11130424011"
["Name"]=>
string(27) "Outdoor Recreation Features"
["Ancestors"]=>
object(SimpleXMLElement)#11 (1) {
["BrowseNode"]=>
object(SimpleXMLElement)#12 (2) {
["BrowseNodeId"]=>
string(7) "3375251"
["Name"]=>
string(17) "Sports & Outdoors"
}
}
}
}
}
尝试递归函数,测试,如果有孩子回叫功能如果不返回结果 – Fky