Считать элементы по условию с помощью XML и PHP?

Я хотел бы получить количество только элементов внутри этого файла с 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 .

Может ли кто-нибудь помочь?

Solutions Collecting From Web of "Считать элементы по условию с помощью XML и PHP?"

Прежде всего, вам нужно получить доступ к 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"]