2017-11-26 19 views
1

문제가 있습니다. 이 코드를 작성했지만 <![CDATA[Epsilon Yayınları]]>을 읽을 수 없습니다. CData가있는 항목은 내가 가져올 때 비어 있습니다. 대체 솔루션이 있습니까?XMLReader가 cdata를 읽지 않습니다

XML :

<urunler> 
    <urun> 
    <stok_kod>9789753314930</stok_kod> 
    <urun_ad><![CDATA[Kırmızı Erik]]></urun_ad> 
    <Barkod>9789753314930</Barkod> 
    <marka><![CDATA[Epsilon Yayınları]]></marka> 
    <Kdv>8,00</Kdv> 
    <satis_fiyat>9,5000</satis_fiyat> 
    <kat_yolu><![CDATA[Edebiyat>Hikaye]]></kat_yolu> 
    <resim>http://basaridagitim.com/images/product/9789753314930.jpg</resim> 
    <Yazar>Tülay Ferah</Yazar> 
    <Bakiye>2,00000000</Bakiye> 
    <detay><![CDATA[]]></detay> 
    </urun> 
</urunler> 

$xml = new XMLReader; 
    $xml->open(DIR_DOWNLOAD . 'xml/'.$xml_info['xml_file_name']); 
    $doc = new DOMDocument; 

    $product_data = array(); 

    $i=0; 


    while ($xml->read() && $xml->name !== 'urun'); 
    while ($xml->name === 'urun') { $i++; 

     $node = simplexml_import_dom($doc->importNode($xml->expand(), true)); 


     var_dump($node->urun_ad); die(); 

덤프 인쇄 :

object(SimpleXMLElement)#143 (1) { 
    [0]=> 
    object(SimpleXMLElement)#145 (0) { 
    } 
} 
+1

지금까지 시도한 것을 설명하십시오. –

답변

0

그것은 단지 당신이 값을 인쇄하는 방법에 온다. 당신은 다음 중 하나에 var_dump을 변경하는 경우, 당신은 얻을 것이다 무엇을 당신의 후 ...주의 할

Kırmızı Erik 
<urun_ad><![CDATA[Kırmızı Erik]]></urun_ad> 

한 가지는 당신이 사용하려는 경우이다

//var_dump($node->urun_ad) 
echo $node->urun_ad.PHP_EOL; 
echo $node->urun_ad->asXML().PHP_EOL; 

출력 ... 값을 다른 메소드에 추가하려면 문자열을 캐스트해야 할 수도 있습니다 (echo는 자동으로이 작업을 수행합니다). 그래서 첫 번째 것은 (예를 들어) ...

$urun_ad = (string)$node->urun_ad; 
+0

당신은 영웅입니다! 많은 시체 sooooo 정말 고마워요! –

+0

var_dump ($ node-> urun_ad.PHP_EOL); 주사위(); 그것은 효과가 있었다. –