112

SimpleXMLElementこれらの CDATA タグを含むドキュメントでを使用すると、コンテンツは常にNULL. これを修正するにはどうすればよいですか?

また、ここで XML についてスパム行為をして申し訳ありません。XML ベースのスクリプトを数時間動作させようとしています...

<content><![CDATA[Hello, world!]]></content>

Google で「SimpleXMLElement cdata」を検索すると、最初にヒットしようとしましたが、うまくいきませんでした。


iBooks はitms-books:およびitms-bookss:URL スキームを登録します。URL として ISBN を渡すと、正しい本がストアに表示されることを期待する人もいるかもしれませんが、そうなるかどうかはわかりません。

4

5 に答える 5

200

正しくアクセスできていない可能性があります。直接出力するか、文字列としてキャストできます。(この例では、キャスティングは不必要です。とにかく echo が自動的に行うためです)

$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
);
于 2010-06-04T00:13:04.817 に答える
62

関数のLIBXML_NOCDATAオプションの 3 番目のパラメーターですsimplexml_load_file()。これにより、すべての CDATA データが文字列に変換された XML オブジェクトが返されます。

$xml = simplexml_load_file($this->filename, 'SimpleXMLElement', LIBXML_NOCDATA);
echo "<pre>";
print_r($xml);
echo "</pre>";


SimpleXML の CDATA を修正

于 2014-03-25T06:30:37.467 に答える
14

これは私にとってはうまくいきました:

echo trim($entry->title);
于 2012-11-24T12:08:21.153 に答える
13

これは私にとって完璧に機能しています。

$content = simplexml_load_string(
    $raw_xml
    , null
    , LIBXML_NOCDATA
);
于 2016-01-25T10:05:53.940 に答える