初めに:
- ライブラリを使用する目的は、エンコードとデコードを自動的に行うことです。
- リテラル文字を挿入
<
すると、XML タグが定義されます。
<
およびがどのようにエンコードされているかを気にする正当な理由があると仮定すると、>
CDATA を使用する必要があります。
<?php
$dom = new DOMDocument;
$dom->load("test.xml");
$titles = $dom->getElementsByTagName('title');
foreach ($titles as $title) {
$newNode = $dom->createCDATASection($title->nodeValue);
$title->nodeValue = null;
$title->appendChild($newNode);
}
$dom->save("success.xml");
...生成します:
<?xml version="1.0"?>
<section id="1">
<title id="2"><![CDATA[>]]></title>
<title id="2"><![CDATA[<]]></title>
<title id="2"><![CDATA[<]]></title>
</section>
しかし、この文書はあなたが既に持っている文書と 100% 同等です (欠落している<?xml version="1.0"?>
見出しを除いて)。
編集 #1:エンティティは、特別な文字をエンコードするための単なる構文トリックであり、ノードの内容をまったく変更せず、PHP がすべてを自動的にデコードします。
$dom = new DOMDocument;
$dom->load("test.xml");
$titles = $dom->getElementsByTagName('title');
foreach ($titles as $title) {
var_dump($title->nodeValue);
}
...デコードされたコンテンツを期待どおりに出力します。
string(1) ">"
string(1) "<"
string(1) "<"
おそらく、この別の例を見るとわかりやすいでしょう:
echo 'O\'Brian';
... は印刷O'Brian
されません O\'Brian
。文字列を変更するのではなく、エンコードしています。
全体像には、次のようなjQueryコードがあると思われます。
$.get('ajax/data.php', function(data) {
$('.result').text(data);
});
...次のようなものがあるはずです:
$.get('ajax/data.php', function(data) {
$('.result').html(data);
});
編集#2:
あなたのオーサリング システムがどのように機能するのか想像もつきません (実際にHTML タグを入力するのに WYSIWYG エディターを使用していないことを願っています)。ブラケット:
- データ
- タグ
DOMDocumentではcreateElement()でタグを作成でき、以前に作成したタグをappendChild()などで挿入できます。
限目。