PHP: işlemek için nasıl
3 Cevap php

Ben bu CDATA etiketler içeren bir belge üzerinde SimpleXMLElement kullanılırken, içerik her zaman NULL olduğunu fark ettim. Bunu nasıl düzeltebilirim?

Ayrıca, burada XML hakkında küfrettiği için üzgünüm. Ben XML tabanlı bir komut artık birkaç saat için işe almak için çalışıyorlar ...

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

Eğer "SimpleXMLElement cdata" için arama Google'da ilk hit denedim, ancak işe yaramadı.

3 Cevap

Muhtemelen doğru erişen değiliz. Doğrudan çıkışı kendisini can ya da bir dize olarak atama. (Eko otomatik olarak zaten yaptığı gibi bu örnekte, döküm, gereksiz)

$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;

Sen iyi şans olabilir ile LIBXML_NOCDATA:

$content = simplexml_load_string(
    '<content><![CDATA[Hello, world!]]></content>'
    , null
    , LIBXML_NOCDATA
);

Bu benim için hile yaptı:

echo (string) trim($entry->title);

LIBXML_NOCDATA simplexml_load_file() fonksiyonunun isteğe bağlı üçüncü bir parametredir. Bu dizeleri dönüştürülen bütün CDATA veri ile XML nesnesini döndürür.

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


Fix CDATA in SimpleXML