2011-09-06 7 views
1

J'essaye d'analyser XML en utilisant en PHP.simpleXML analyse

Le problème que j'ai, c'est que certains nœuds ont des valeurs comme Milk & Cheese et j'obtiens une erreur d'analyse.

Quelle est la manière la plus simple d'analyser XML en utilisant simpleXML avec des caractères tels que & et/étant présent?

Merci

EDIT:

J'utilise:

$source = 'stockdata.xml'; 
$stock = simplexml_load_file($source); 

foreach($stock->StockItem as $item) 
{ 
........ 
} 
+0

-1 est un peu difficile ici, avant même la dernière édition. +1 sauf si j'entends autrement – Dlongnecker

Répondre

2

solution rapide:

$xml = str_replace('&','&',$xml); //$xml is the content in string format 

une meilleure solution: [si vous contrôlez le xml]

ajouter CDATA dans les balises xml

<name><![CDATA[ Milk & honey]]></script> 

et vous aurez besoin de dire à SimpleXml de prendre soin du CDATA:

$sxml = simplexml_load_file('myfile.xml','SimpleXMLElement', LIBXML_NOCDATA); 

Hope this helps

+0

Doit changer la façon dont XML a été lu en utilisant 'file_get_contents'. Tout semble aller bien maintenant. – terrid25

3

Vous devez utiliser XML (and HTML) entities. Au lieu de Milk & Cheese, utilisez Milk &amp; Cheese. Vous pouvez trouver une liste complète au W3Schools.

+0

la fonction php pour ce faire est htmentites(). Donc vous pouvez faire: $ str = htmlentities ($ str, ENT_QUOTES, $ encoding); ENT_QUOTES indique comment traiter les guillemets, et $ encoding est optionnel, mais si vous savez que c'est bon à inclure. – perilandmishap