IT story

PHP : 처리 방법

hot-time 2020. 8. 29. 12:42
반응형

PHP : 처리 방법

내가 사용하는 경우 것으로 나타났습니다 SimpleXMLElement그 CDATA 태그가 포함 된 문서에 내용이 항상 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()함수. 이것은 모든 CDATA 데이터가 문자열로 변환 된 XML 객체를 반환합니다.

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


SimpleXML에서 CDATA 수정


이것은 나를 위해 트릭을했습니다.

echo trim($entry->title);

이것은 나를 위해 완벽하게 작동합니다.

$content = simplexml_load_string(
    $raw_xml
    , null
    , LIBXML_NOCDATA
);

참고 URL : https://stackoverflow.com/questions/2970602/php-how-to-handle-cdata-with-simplexmlelement

반응형