簡體   English   中英

使用xpath獲取父節點內的所有文本

[英]Get all text within parent node with xpath

我剛剛開始將Xpath用於PHP中的項目。 我必須從網站上獲取每種產品的個別價格。 每個產品的價格信息均采用以下格式:

<div class="priceStockDetail">
    <dl>
        <dt>Across any 6</dt>
        <dd><span class='price '><span class='currency'>$</span>20<span class=cents>.90</span></span></dd>

        <dt>Each</dt>
        <dd><span class='price '><span class='currency'>$</span>22<span class=cents>.00</span></span></dd>
    </dl>
</div>

我希望僅使用Xpath表達式將<dt>Each</dt>之后的文本作為一個文本(上面示例中為“ $ 22.00”)。

任何幫助將不勝感激。

您可以定位每個片段元素並進行連接,也可以定位父對象並獲取nodeValue。 例:

$dom = new DOMDocument();
$dom->loadHTML($html_string);
$xpath = new DOMXpath($dom);

$data = array();
$products = $xpath->query('//dt');
if($products->length > 0) {
    foreach($products as $product) {
        $product_name = $product->nodeValue;

        // either get individually

        // $currency = $xpath->evaluate('string(./following-sibling::dd[1]/span/span[@class="currency"])', $product);
        // $price = $xpath->evaluate('string(./following-sibling::dd[1]/span/span[@class="currency"]/following-sibling::text())', $product);
        // $cents = $xpath->evaluate('string(./following-sibling::dd[1]/span/span[@class="cents"])', $product);
        // $product_price = $currency.$price.$cents;

        // or
        $product_price = $xpath->evaluate('string(./following-sibling::dd[1]/span)', $product);


        $data[] = array(
            'product_name' => $product_name,
            'product_price' => $product_price,
        );
    }
}

echo '<pre>';
print_r($data);

樣本輸出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM