我认为主要的问题是
//ess:PartNumInfo
在第二个xpath表达式中,这也会导致找到其他元素(///表示任何元素)。如果你把它改成
descendant::
axis和第一个xpath表达式一样,它将只查找起点内的元素。
我已经更改了代码,以便在下一级对元素进行分组,所以…
$xp = "descendant::ess:ProPartList/ess:ProPart/ess:SelectedPart";
$selected = $xml->xpath($xp);
foreach($selected as $part) {
$partnuminfo = $part->xpath("descendant::ess:PartNumInfo");
$group = array();
foreach($partnuminfo as $p) {
$_Type = (string)$p->children("ess",true)->PartNumType;
$group[$_Type] =(string)$p->children("ess",true)->PartNum;
}
$partnums[] = $group;
}
print_r($partnums);
给予。。。
Array
(
[0] => Array
(
[OE] => 04715SNAA90ZZ
[IC] => 536-01037
[PType] => 536
)
[1] => Array
(
[OE] => 71570SNAA00
[IC] => 536-01036
)
[2] => Array
(
[OE] => 66100SNEA00ZZ
[IC] => 117-50338
)
[3] => Array
(
[OE] => 04655SNE305ZZ
)
)