これらのCDATAタグを含むドキュメントでSimpleXMLElement
を使用すると、コンテンツは常にNULL
であることに気付きました。どうすれば修正できますか?
また、ここでXMLに関するスパムを送信して申し訳ありません。私は数時間前からXMLベースのスクリプトを動作させようとしています...
<content><![CDATA[Hello, world!]]></content>
「SimpleXMLElement cdata」を検索した場合、Googleで最初のヒットを試みましたが、うまくいきませんでした。
おそらく正しくアクセスしていないでしょう。直接出力することも、文字列としてキャストすることもできます。 (この例では、とにかくエコーが自動的に行うため、キャストは不要です)
$content = simplexml_load_string(
'<content><![CDATA[Hello, world!]]></content>'
);
echo (string) $content;
// or with parent element:
$foo = simplexml_load_string(
'<foo><content><![CDATA[Hello, world!]]></content></foo>'
);
echo (string) $foo->content;
LIBXML_NOCDATA
の方が幸運かもしれません:
$content = simplexml_load_string(
'<content><![CDATA[Hello, world!]]></content>'
, null
, LIBXML_NOCDATA
);
LIBXML_NOCDATA
は、simplexml_load_file()
関数のオプションの3番目のパラメーターです。これにより、すべてのCDATAデータが文字列に変換されたXMLオブジェクトが返されます。
$xml = simplexml_load_file($this->filename, 'SimpleXMLElement', LIBXML_NOCDATA);
echo "<pre>";
print_r($xml);
echo "</pre>";
これは私のためにトリックをしました:
echo trim($entry->title);
これは私に最適です。
$content = simplexml_load_string(
$raw_xml
, null
, LIBXML_NOCDATA
);