私は、ユーザが与えられたドキュメントからソースデータとして使うXPathクエリを書くアプリケーションを持っています。場合によっては、要素の内容だけが必要な場合もあれば、要素全体が必要な場合もあります。私の理解では、クエリの最後にtext()またはnode()のどちらかを指定して、どの動作を選択できるようにする必要があります。PHP SimpleXMLElement:saveXML()またはouterHTML(int)を使用してinnertextを取得できますか?
しかし、SimpleXMLElementから文字列を取得する方法は、クエリに関係なく動作を決定するようです。
私は(文字列)にクエリをキャストするとき、常に内側のXMLだけを返します。
(string) $xml->xpath('//document/head/Keywords')[0] ===
(string) $xml->xpath('//document/head/Keywords/node()')[0] ===
(string) $xml->xpath('//document/head/Keywords/text()')[0] ===
'17';
- > saveXML()を使用すると、常にタグ全体が返されます。
$xml->xpath('//document/head/Keywords')[0]->asXML() ===
$xml->xpath('//document/head/Keywords/node()')[0]->asXML() ===
$xml->xpath('//document/head/Keywords/text()')[0]->asXML() ===
'<Keywords topic="611x27keqj">17</Keywords>';
私は、ユーザーが自分のXPathクエリの一部として外側のXML対インナー指定することを可能にする文字列を取得することができ、単一の方法はありますか?
[PHP(つまりSimpleXmlElement)を使用してXMLデータからすべてのテキストを抽出するにはどうすればよいですか?](https://stackoverflow.com/questions/31766136/how-can-i-extract-all-text-from) -xml-data-using-php-ie-simplexmlelement) – ThW