Я хотел бы получить количество только элементов внутри этого файла с sellingstatus->sellingstate
of EndedWithSales
ТОЛЬКО и, возможно, также получить счетчик для EnededWithoutSales
.
<sellingStatus> <currentPrice currencyId="USD">25.0</currentPrice> <convertedCurrentPrice currencyId="USD">25.0</convertedCurrentPrice> <bidCount>1</bidCount> <sellingState>EndedWithSales</sellingState> </sellingStatus>
Как я могу пропустить этот аргумент в php?
Вот ссылка на образец XML: http://developer.ebay.com/DevZone/finding/CallRef/Samples/findCompletedItems_basic_out_xml.txt .
Может ли кто-нибудь помочь?
Прежде всего, вам нужно получить доступ к url thu file_get_contents
, Рассмотрим этот пример:
$url = 'http://developer.ebay.com/DevZone/finding/CallRef/Samples/findCompletedItems_basic_out_xml.txt'; // access the url and get that file $contents = file_get_contents($url); // convert it to an xml object $contents = simplexml_load_string($contents); $count = 0; // initialize counter // loop and search for that foreach($contents->searchResult->item as $key => $value) { if(isset($value->sellingStatus->sellingState) && $value->sellingStatus->sellingState == 'EndedWithSales') { // if that key exists and is contains EndedWithSales, increment it $count++; } } // at the end of the loop echo it or whatever you wanted to do echo "<script>alert('You have $count ocurrances of EndedWithSales in this XML');</script>";
Вы можете загрузить XML в DOMDocument, создать экземпляр Xpath, чтобы он просто вызвал счет.
$url = 'http://developer.ebay.com/DevZone/finding/CallRef/Samples/findCompletedItems_basic_out_xml.txt'; $dom = new DOMDocument(); $dom->load($url); $xpath = new DOMXpath($dom); // register a prefix for the namespace used in the document $xpath->registerNamespace('ebay', 'http://www.ebay.com/marketplace/search/v1/services'); var_dump( $xpath->evaluate( 'count( //ebay:searchResult[1] /ebay:item[ ebay:sellingStatus/ebay:sellingState = "EndedWithSales" ] )' ) );
Вывод:
double(2)
Функция Xpaths count()
возвращает количество узлов в определенном выражении.
Первый элемент searchResult
в документе:
//ebay:searchResult[1]
Элементы элемента в первом searchResult
//ebay:searchResult[1]/ebay:item
Элементы с sellingState
«EndedWithSales»
//ebay:searchResult[1]/ebay:item[ebay:sellingStatus/ebay:sellingState = "EndedWithSales"]