2015-06-05 4 views
1

У меня проблема с функцией php SimpleXMLElement. Это мой код:PHP Необлученное исключение «Исключение» с сообщением «Строка не может быть проанализирована как XML

echo $xmldata; 
$nodes = new SimpleXMLElement($xmldata); 

Уит этот код у меня есть ниже вывод:

<?xml version="1.0" encoding="utf-8"?> 
<node> 
    <node> 
    <title>CONTENT DI PROVA</title> 
    <body>CIAO CIAO 
</body> 
    <created>Thursday, June 4, 2015 - 17:37</created> 
    <type>Article</type> 
    <field_geoposition>Geolocation is 45.4654219, 9.18592430000001</field_geoposition> 
    <path>/Argomentiamo/?q=node/1</path> 
    </node> 
</node> 

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in 
    /membri/****/*****/****:50 Stack trace: #0 /membri/****/*****/****(50): SimpleXMLElement->__construct('<code><span sty...') #1 /membri/****/*****/****(101): xmlToArel() #2 {main} thrown in /membri//****/*****/**** on line 50 

но если я заменить $ XMLDATA с его выходом в функции SimpleXMLElement, как это:

echo $xmldata; 

$nodes = new SimpleXMLElement('<?xml version="1.0" encoding="utf-8"?> 
<node> 
    <node> 
    <title>CONTENT DI PROVA</title> 
    <body>CIAO CIAO 
    </body> 
    <created>Thursday, June 4, 2015 - 17:37</created> 
    <type>Article</type> 
    <field_geoposition>Geolocation is 45.4654219, 9.18592430000001</field_geoposition> 
    <path>/Argomentiamo/?q=node/1</path> 
    </node> 
</node>'/*$xmldata*/); 

я не имею ошибок ...

EDIT: может быть, проблема в том, что я использую highlight_string держать мой XML:

$ch = curl_init($xmlsource); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$sorgente = curl_exec($ch); 
curl_close($ch); 
$xmldata = highlight_string($sorgente,true); 

Кто-то может мне помочь?

+1

Да, не выделяйте/не удаляйте строку XML, а затем ожидайте, что она будет читаться как XML. Просто передайте '$ sorgente' в функцию SimpleXML. – IMSoP

+0

работает :) спасибо! – Luke

ответ

0

Я вижу эту часть сообщения об ошибке: SimpleXMLElement->__construct('<code><span sty...')

С этим я могу видеть, что у вас есть HTML-код в XML, и я предполагаю, что это для укладки. Удалите это из XML, и он должен работать.

Совет: не используйте эхо, но var_dump для вывода при отладке. Вы бы это видели.

+0

Я не могу удалить html-код. Есть метод для синтаксического анализа xml внутри html-страницы? – Luke

Смежные вопросы