ここに私が現在使用しているいくつかのコードがあります。助けが必要な場所$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があれば空欄にはなりません。否定的な表現を 2 つ入れることができれば、さらに良いでしょう。名前が「すべての製品」および「部門」の名前のものは省略します
編集:
ここに 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>