2013-05-14 100 views
0

我想中檢索使用SimpleXML在XML文件中的字符串獲取一個XML文件中的特殊人物造型。但是該字符串包含字符「&」。所以我認爲我必須使用CDATA來獲得價值。我對此非常陌生,不知道如何去做。 這只是我想要的一個例子。使用SimpleXML和CDATA

使用example.php

<?php 
    $xmlstr = <<<XML 
    <?xml version='1.0' standalone='yes'?> 
    <Books> 
    <Book> 
     <title> PHP & XML </title> 
     <author> Some text </author> 
     <price> Some text </price> 
    </Book> 
    <Book> 
     <title> Java & Coding </title> 
     <author> Some text </author> 
     <price> Some text </price> 
    </Book> 

    </Books> 
    XML; 
?> 

這是我調用PHP文件

call.php

<?php 
    include 'Example.php'; 

    $xml = simplexml_load_string($xmlstr); 
    $abc = $xml->Book[0]->title[0]; 
    echo $abc; 
?> 

而且它給,因爲字符 「&」 的錯誤。我無法更改我的XML。任何修改都可以通過呼叫.php 任何有關此事的幫助將不勝感激。 Thanx。

+0

那麼,XML在技術上是無效的。你*應該*和*需要*來改變它。 – deceze 2013-05-14 05:42:52

+0

對不起。你能告訴我我的XML的哪一部分是無效的嗎? – gecco 2013-05-14 05:46:22

+0

'&'。不裸'&'允許在裸文本節點,它是* *需要將''&。 – deceze 2013-05-14 06:01:20

回答

0

你有這樣的SO PHP, SimpleXML, decoding entities in CDATA

它有大約CDATA解釋,可在

特殊字符情況下使用(特別是>,<和&)進行轉義一個確切的問題。包含字符&甲CDATA 部分是相同的含&普通文本節點 。

對此看看。

編輯

這裏是一個解決方案,如果您在使用example.php代碼加載每次轉換爲字符串,然後下面是一個解決方案。

$xmlstr = str_replace("&","&amp;",$xmlstr); 
    $xml = simplexml_load_string($xmlstr); 
    $abc = $xml->Book[0]->title[0]; 
    echo $abc; 
+0

是的,我知道如何使用CDATA一個XML PHP中<![CDATA [和]]> XML 但我的問題是我如何使用它在我的呼喚作爲.PHP我不能做我的使用example.php – gecco 2013-05-14 05:54:19

+0

任何更改查看更新的代碼:) – NullPointer 2013-05-14 06:17:03

+0

是的,它是working.Thank你這麼多。 :) – gecco 2013-05-14 06:19:14