2011-07-26 22 views
0

私は、このXMLファイルを持っている:このXMLデータの処理方法は?

<images> 
<photo image="images/101.jpg" colorboxImage="images/101.jpg" colorboxInfo="Item 01" colorboxClass="image" url = "http://www.flashxml.net" target="_blank"> 
<![CDATA[<head>Hello</head><body>Welcome to the new Circular Gallery</body>]]></photo> 

<photo image="images/102.jpg" colorboxImage="images/102.jpg" colorboxInfo="Item 02" colorboxClass="image" url = "http://www.flashxml.net" target="_blank"> 
<![CDATA[<head>Download the new Circular Gallery</head><body>for FREE</body>]]></photo> 

<photo image="images/103.jpg" colorboxImage="images/103.jpg" colorboxInfo="Item 03" colorboxClass="image" url = "http://www.flashxml.net" target="_blank"> 
<![CDATA[<head>Insert it in your website</head><body>without any special skills or software</body>]]></photo> 

<photo image="images/104.jpg" colorboxImage="images/104.jpg" colorboxInfo="Item 04" colorboxClass="image" url = "http://www.flashxml.net" target="_blank"> 
<![CDATA[<head>Put your own images in the "images" folder</head><body>and update the images.xml file accordingly</body>]]></photo> 

<photo image="images/105.jpg" colorboxImage="images/105.jpg" colorboxInfo="Item 05" colorboxClass="image" url = "http://www.flashxml.net" target="_blank"> 
<![CDATA[<head>You can put <a href="http://www.flashxml.net" target="_blank">links</a> in this HTML/CSS formatted text</head><body>and you can also put links behind the images</body>]]></photo></images> 

と、このPHPコード:

$xml = simplexml_load_file("images.xml"); 

foreach ($xml->children() as $child) 
    { 
    echo "Child node: " . $child . "<br />" . $child["image"] . "<br />"; 

    } 

をし、私はこのような結果を得る:

Child node: HelloWelcome to the new Circular Gallery 
images/101.jpg 
Child node: Download the new Circular Galleryfor FREE 
images/102.jpg 
Child node: Insert it in your websitewithout any special skills or software 
images/103.jpg 

私はこの部分のテキストを分けたいです:

<![CDATA[<head>You can put <a href="http://www.flashxml.net" target="_blank">links</a> in this HTML/CSS formatted text</head><body>and you can also put links behind the images</body>]]> 

頭の部分と身体の部分のテキストを読んでみたいが、このコードはそれらを1つのテキストにまとめて、それぞれの方法を知りませんでした。

+0

をそれがCDATAセクションです。その中のものはリテラル文字列として扱われます。 – Gordon

答えて

0

ノードの内容を再度解析する必要があるようです(simplexml_load_stringを使用)。しかし、SimpleXMLElementには、ノードのテキストコンテンツ(子要素のみ)を取得する機能はありませんでした。奇妙な。

しかし、それは、ノードの文字列への変換は、このノードのコンテンツを返すように、このようにあなたはこの試みることができるになります。

$xml = simplexml_load_file("images.xml"); 

foreach ($xml->children() as $child) 
{ 
    echo "Child node: " . $child . "<br />" . $child["image"] . "<br />"; 
    $content = simplexml_load_string("<dummy>". $child . "</dummy>"); 
    echo "child head: " . $content->head . "<br/>"; 
    echo "child body: " . $content->body . "<br/>"; 
} 
関連する問題