这是我目前正在使用的一些代码。我需要帮助的地方是$bn_name_search
和$bn_id_search
$xpath_base='/ItemSearchResponse/Items/Item[';
for ($i = 1; $i<=10; $i++)
{
$curr_item_base=$xpath_base.$i.']';
$bn_name_search=$curr_item_base.'/BrowseNodes//BrowseNode/Name/text()';
$bn_id_search=$curr_item_base.'/BrowseNodes//BrowseNode/BrowseNodeId/text()';
$bn_names=$parsed->xpath($bn_name_search);
$bn_ids=$parsed->xpath($bn_id_search);
}
这给了我所有 browsnode 名称和所有 broswnode id。我现在想做的是只找到BrowseNode/Name/
不是“所有产品”的浏览节点名称“”,并且只有浏览节点 ID“BrowseNode/BrowseNodeId/
共享一个” BrowseNode/
,名称不是“所有产品”我不必测试的存在BrowseNode/Name
。如果有 ID,则不会为空。如果我能放两个否定的表达就更好了。我会省略那些名字是“所有产品”和名字是“部门”的人
编辑:
这是 XML 的一个块:在它说“ <Name>Departments</Name>
”的地方,我想排除那个名字和它的 ID。如果我有一个类似的人说“ <Name>All Products</Name>
”,我也想排除那个名字和它的 ID。(通过ID,我的意思是<BrowseNodeId>
)
<BrowseNodes>
<BrowseNode>
<BrowseNodeId>2346727011</BrowseNodeId>
<Name>Casual</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1045024</BrowseNodeId>
<Name>Dresses</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1040660</BrowseNodeId>
<Name>Women</Name>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1036682</BrowseNodeId>
<Name>Departments</Name>
<IsCategoryRoot>1</IsCategoryRoot>
<Ancestors>
<BrowseNode>
<BrowseNodeId>1036592</BrowseNodeId>
<Name>Clothing & Accessories</Name>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</Ancestors>
</BrowseNode>
</BrowseNodes>