1

次のような HTML があります。

<dd class="price">
    <sup class="symbol">&#36;</sup><span class="dollars">58</span><sup class="cents">.00</sup>
</dd>

$58.00 を 1 つの文字列として返す xpath は何ですか?

私はPHPを使用しています:

$xpath = '?????';
$result = $xml->xpath($xpath);
echo $result[0];   // want this to show $58.00, possible?
4

3 に答える 3

3

これらはあなたの場合に有効です。詳細については、以下のリンクを確認してください。

$html = '<dd class="price">
            <sup class="symbol">&#36;</sup><span class="dollars">58</span><sup class="cents">.00</sup>
         </dd>';
$dom = new DOMDocument();
$dom->loadXML($html);
$xpt = new DOMXpath($dom);
foreach ($xpt->query('//dd[@class="price"]') as $node) {
    // outputs: $58.00
    echo trim($node->nodeValue);
}
// or
$xml = new SimpleXMLElement($html);
$res1 = $xml->xpath('//dd[@class="price"]/sup');
$res2 = $xml->xpath('//dd[@class="price"]/span');
// outputs: $58.00
printf('%s%s%s', (string) $res1[0], (string) $res2[0], (string) $res1[1]);
  1. DOMドキュメント
  2. DOMXパス
  3. SimpleXML 要素
于 2013-01-27T23:38:54.513 に答える
0

コードを見せていないので、使用しているプラ​​ットフォームがわかりません。ノード以外の XPath 式を評価できるものがあれば、これを使用できます。

string(//dd[@class = 'price'])

そうでない場合は、ノードを選択できます。

//dd[@class = 'price']

使用している API には、選択したノードの内部テキスト値を取得する方法が必要です。

于 2013-01-27T09:45:10.140 に答える
0

data()現在のコンテキスト内のすべてのコンテンツを返します。試す

//dd/data()
于 2013-01-27T09:37:21.530 に答える