這是我目前使用的一些代碼。當我需要幫助的$bn_name_search
和$bn_id_search
從xpath中排除節點查詢
$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 IDS。我現在想要做的只是找到不是「所有產品」的browsenode名稱「BrowseNode/Name/
」,只有browsnode 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>
感謝您的答案。當我開始工作時,我會嘗試其中的一個或兩個。 – TecBrat 2012-04-23 02:17:18
僅供將來參考,如果您想快速回答,最好儘可能多地發佈信息,並儘可能輸入/輸出。 – JWiley 2012-04-23 11:40:16
以下任意數量的答案都有效。我的測試代碼中有一個錯誤,所以沒有任何工作。最後,最簡單的答案(在我眼中)是對我有用的。再次感謝所有提供答案的人! – TecBrat 2012-04-23 14:47:56