DOMElementにソースhtmlを追加する方法はありますか?このようなもの:ソースhtmlをPHPのDOMElementに追加するには?
$trElement->appendSource("<a href='?select_user=4'>Username</a>");
このフラグメントを解析して追加します。
あなたがマニュアルから- DOMDocumentFragment::appendXML
— Append raw XML data
例を探している
DOMElementにソースhtmlを追加する方法はありますか?このようなもの:ソースhtmlをPHPのDOMElementに追加するには?
$trElement->appendSource("<a href='?select_user=4'>Username</a>");
このフラグメントを解析して追加します。
あなたがマニュアルから- DOMDocumentFragment::appendXML
— Append raw XML data
例を探している
:あなたがスコープでdocument rootへの参照を持っていない場合、あなたは常にownerDocument
経由でアクセスすることができます
$doc = new DOMDocument();
$doc->loadXML("<root/>");
$f = $doc->createDocumentFragment();
$f->appendXML("<foo>text</foo><bar>text2</bar>");
$doc->documentElement->appendChild($f);
echo $doc->saveXML();
任意のノードのプロパティ:
$frag = $trElement->ownerDocument->createDocumentFragment();
$frag->appendXML("<a href='?select_user=4'>Username</a>");
$trElement->appendChild($frag);
はい、あなたはDOMDocument::createDocumentFragment
でこれを行うことができます。
$fragment = $dom->createDocumentFragment();
$fragment->appendXML('<a href="select_user=4">Username</a>');
$element->appendChild($fragment);
をこのような場合には、通常のcreateElement
コールでそれを行うために単純になります:
$el = $dom->createElement('a', 'Username');
$el->setAttribute('href', 'select_user=4');
$element->appendChild($el);
、$element
がDOMであります要素にコードを追加します。
"この場合、通常のcreateElementコールでこれを行う方が簡単です:"、これは私のケースではありません。私のアプリでは、任意の入力を持つことができるので、フラグメントはOKです。 – fabio
@fabioそうです。あなたの入力を念入りにしてください... – lonesomeday
ありがとう、それは魅力のように働いた!! – fabio
注:HTML入力も有効なXMLでなければなりません。さもなければエラーが発生します。私がこれをやったのは、別の文書を作成し、その文書にHTMLを読み込み(XMLではなくHTMLとして)し、新しく作成したノードを元の文書に戻すことです。 –
外部コードを追加した結果、 'DOMDocument :: saveHTML()'に 'conv errorによって出力変換に失敗しました 'というメッセージが表示される場合は、強制的に特定のエンコーディング標準に変換する必要があります。 'utf8_encode()'を介して。 – kenorb