0

コンテンツがXMLファイルに保存されているPHPでWebサイトを構築しています。index.php基本的に、クエリ文字列をチェックしてXMLから適切なページを提供する単一のページがあります。

たとえば、入力www.mysite.com/?page=homeすると、PHPスクリプトはXMLファイルで<page id="home">タグをチェックし、そのタグ内にあるものをすべてに貼り付けindex.phpます。

タグの内容は<page>HTMLとして保存されるため、次のようになります。

<xmlroot>
  <page id="home">
    <h1>An HTML Header Tag!</h1>
    <p>This is a paragraph</p>
  </page>
  [...etc]
</xmlroot>

<page>適切なタグを取得して、なんとかして内容を解析できるようにしたいと思っていました。タグ内のすべてが有効なHTMLであることを知っている<page>ので、expatを使用してタグを実行し、タグをecho元に戻します。

そのため、このメソッドを使用しDOMDocumentて正しいものを見つけています<page>。これは、コンテンツがDOM要素として返されることを除いて正常に機能します。expatパーサーには文字列が必要です。したがって、次の2つのいずれかを実行する必要があります。

  1. DOM要素を魔法のように文字列に変換して、すべてのタグをそのまま保持し、expatパーサーで使用できるようにします。ただし、これができれば、expatパーサーは必要なく、変換された文字列を直接エコーすることができます。

  2. 海外駐在員以外のものを使用してください。

ちなみに、 XMLの<andをandに置き換えるだけでよいことはわかっていますが、これによりコードの読み取りと編集が非常に困難になります。できれば避けたいです。>&lt;&gt;

4

2 に答える 2

0
<?php

$doc = new DOMDocument('1.0');

$root = $doc->createElement('html');
$root = $doc->appendChild($root);

$head = $doc->createElement('head');
$head = $root->appendChild($head);

$title = $doc->createElement('title');
$title = $head->appendChild($title);

$text = $doc->createTextNode('< This is the title >');
$text = $title->appendChild($text);

echo $head->ownerDocument->saveXML($head);

DOMDocument :: saveXML()は、特定のノードのみを出力するために$nodeパラメーターを 取ります


http://www.php.net/manual/en/domdocument.savexml.php

于 2011-12-14T09:12:14.183 に答える
0

ドー。質問をする前にもう数分待っていたら。

解決策は、すべてをCDATAタグに含めることでした。

<xmlroot> 
  <page id="home"> 
    <![CDATA[
      <h1>An HTML Header Tag!</h1> 
      <p>This is a paragraph</p> 
    ]]>
  </page>
  [...etc]
</xmlroot>

page次に、タグを取得し、を使用してコンテンツを出力でき$page->nodeValueます。私はそれが私がちょうど自分自身に与えた無意味な頭痛を他の誰かを救うことを願ってこれを提供します。

于 2011-12-15T09:02:43.457 に答える