foreacher xml node return selected elemento

Como posso obter apenas o valor selecionado da minha tag xml cdata?

Até agora, com ajuda no stackoverflow, posso obter todas as tags em uma string

 $result = simplexml_load_file($url, 'SimpleXMLElement', LIBXML_NOCDATA); foreach ($result->channel->item as $item) { $desc = $item->description; $dom = new DOMDocument($desc); $dom->loadHTML($desc); $bold_tags = $dom->getElementsByTagName('b'); foreach($bold_tags as $b) { echo $b->nodeValue . "
"; }

mas irá ecoar todos os dados que estão dentro de , mas eu quero obter apenas digamos preço. Eu vermelho no stackoverflow para usar ->item(x) para obter esse valor, mas nada está funcionando. Se eu colocá-lo assim echo $b->nodeValue->item(2) . "
";
echo $b->nodeValue->item(2) . "
";
ou echo $b->item(2)->nodeValue . "
";
echo $b->item(2)->nodeValue . "
";
. Então, onde devo colocá-lo ou o que devo usar para obter apenas o elemento com o preço. O preço sempre estará no mesmo lugar.

Aqui está o CDATA do feed:

    District: Purvciems
Street: Dudajeva g. 12
Rooms: 2
m2: 50
Type: LT proj.
: 3
Price: 150 €/mēn.

Apskatīt sludinājumu

]]>

Você pode tentar este método para analisar esses preços:

 $url = "http://www.ss.lv/lv/real-estate/flats/riga/hand_over/rss/"; $result = simplexml_load_file($url, 'SimpleXMLElement', LIBXML_NOCDATA); $data = array(); foreach($result->channel->item as $item) { $temp = array(); $title = (string) trim($item->title); $desc = $item->description; $temp['title'] = $title; $dom = new DOMDocument('1.0', 'utf-8'); $desc = mb_convert_encoding($desc, 'HTML-ENTITIES', "UTF-8"); $dom->loadHTML($desc); $xpath = new DOMXpath($dom); $price_tag = $xpath->query('//text()[contains(., "Cena")]'); // target Cena, // i didn't know this was PRICE in translation haha $price = $price_tag->item(0)->nextSibling->nodeValue; $temp['price'] = $price; $data[] = $temp ; } echo '
'; print_r($data);

Ok, por uma explicação:

Então, o objective é obter os preços que residem na marca dentro do CDATA.

Então, cada nó contém os mesmos que se parecem com isto:

    Rajons: centrs 
Iela: Rūpniecības 7
Ist.: 4
m2: 145
Sērija: Renov.
: 10.34 €
Cena: 1,500 €/mēn.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // this one
Apskatīt sludinājumu

Então, o objective é, usando xpath, procurar os Preços (Cena). Então, de acordo com a marcação, este é um nó de texto normal (Não é um elemento ou não é uma etiqueta).

Então, almejamos esse elemento de texto que contém "Cena":

 //text()[contains(., "Cena")] 

Então, cada Cena / Price tem as próximas tags de irmão que contêm esse valor específico, então nós direcionamos cada Cena / Preço e apontamos o próximo irmão que é tag

 item(0)->nextSibling->nodeValue Cena/Price -> nextSibling (which is b tag) -> its value