タイトルで述べたように、XML ドキュメントからすべての空の要素を削除したいと思います。
空とは、その要素またはその子要素にテキストノードがない要素を意味します。
phpQueryでそれを行うことは可能ですか?
このトピックの回答からゴードンのコードを使用しました: Reg expression to remove empty Tags (any of them)?
まず、彼の XPath クエリをメソッドに入れようとしましたが、クエリphpQueryObject::find()
が正しくないという警告が表示されました。使用していて動作するはずなので、理由はわかりませんDOMXPath
。
とにかく、解決策はまだ非常に簡単でした。
$pqDoc = phpquery::newDocument() // phpQueryObject created some way. Doesn't matter here.
$xp = new DOMXPath($pqDoc->getDOMDocument());
foreach($xp->query('//*[not(node()) or normalize-space() = ""]') as $node) {
$node->parentNode->removeChild($node);
}
これで空の要素が削除されましphpQueryObject
たが、実際には の参照に取り組んでいるため、変更した要素を引き続き使用できますDOMDocument
。