私はここで解決策を試しました:Getting attribute using XPath しかし、それは私にエラーが発生します。XPath 1.0では、属性値とノード内のテキストを同時に取得できますか?
私はこのようないくつかのXHTMLあります
<a href="link.php">Click me!</a>
を私は再帰的にXMLを解析し、同時にhref
属性(link.php
)とリンクテキスト(Click me!
)の両方を取得しようとしています。
<?php
$node = $xpath->query('string(self::a/@href) | self::a/text()', $nodes->item(0));
このコードは、次のエラーがスローされます。私は、これら2つのいずれかを行う場合は
Warning: DOMXPath::query(): Invalid type
は別に、彼らは一緒に動作しますが、ない:
<?php
$node = $xpath->evaluate('string(self::a/@href)', $nodes->item(0));
$node = $xpath->query('self::a/text()', $nodes->item(0));
私は次のように使用している場合は、私が取得その値だけでなく、属性全体(href="link.php"
):
<?php
$node = $xpath->query('self::a/@href | self::a/text()', $nodes->item(0));
PHPでXPath 1.0を使用して、両方のテキスト値を同時に取得する方法はありますか?
彼を文字列にする:) - concat(a/@ href、 '|'、a/text()) – splash58
@ splash58それで私には全くのマッチはありません。それは真剣な提案ですか? –
私はphp xpahtがconcatをサポートするとは思わない。また、私はあなたがなぜxpathでこれをやろうとしているのかわかりません(私はxpathが好きです)。あなたはすでに正しいDomNodeを持っているようです。だからなぜ ' - > getAttribute'と' - > node_value'を使わないのですか? –