2011-08-15 20 views
2

私は混乱します。 CDATA内のタグにアクセスするにはどうすればよいですか?PHPを使用してXMLでCDATA内のタグにアクセスする

XMLコード:

<body> 
<block> 
<![CDATA[ 
    <font color="#FFCC53" size="+6"><b>Latest News Updates</b></font> 
    <font color="#AAAAAA">HTML Formatted Text Fields</font>    
]]>       
</block> 
</body> 

PHPコード:

<?php 
    $xml = simplexml_load_file("main.xml"); 
    print ( $xml->smallTextList[0]->item[0]->textBody[0]->font[0]) ; 
?> 

私はこれを使用していますが、私は空白の画面を取得しています....

+0

解決策はありますか? http://stackoverflow.com/questions/1246732/parsing-xml-cdata-with-php – blottedscience

答えて

0

あなたの問題は、あなたのフォントということですタグはの中にCDATAのです。 CDATAは "Compiled Data"の略であるため、PHPは "解析されていないデータのブロック"として扱うべきです。タグとしてそれらを読み取らせることはできません(そしてできません)。あなたは、おそらくのような何かをする必要があります:

$xml = simplexml_load_file("main.xml"); 
$inner = simplexml_load_string( 
'<fk>' . // you have to wrap the CDATA in a tag, otherwise it will break. 
     // not sure about asXML. You may be able to get away without it. 
     $xml->block[0]->asXML() . 
'</fk>' 
); 
print $inner->font[0]; 

あなたの問題は、もちろん、CDATAが<または>などの有効なXMLされていない事を、できるようになるが、これはあなたの最良の選択肢であると考えられるということです。 ..

+0

私はそれを持っていて、このエラーメッセージがあります。致命的なエラー:メンバー関数asXML()を呼び出すと、C: \ xampp \ htdocs \ xml \ forum \ 1.php on line 7 – junaid

+0

@junaidこれはあなたのコードから多かれ少なかれコピーされています。つまり、あなたの 'smallTextList [0] - > item'は存在しませんでした。 – cwallenpoole

関連する問題