2013-06-09 2 views
0

У меня есть два XML-документы, как отформатирован так:Можно разобрать один документ, но не другой

<?xml version="1.0" ?> 
<article> 
    <body> 
    <![CDATA[ 
     *some text* 
    ]]> 
    </body> 
</article> 

, и я хочу повторить их с помощью этого:

<?php 
    $xml = simplexml_load_file("." . $filename); 
    echo $xml->body; 
?> 

Но один из них работает , другие просто ничего не дают. Что происходит?

UPDATE: Документ, который производит ошибку, содержит этот appostrophe: ' Когда этот апостроф удален, код работает. Мне нужно каким-то образом избежать подобных символов, как я могу это сделать?

+0

Не должны ли вы избежать выхода? –

+0

думаю простойXML уже делает. Во всяком случае, он работает с одним XML, так почему бы ему не работать с другим? –

ответ

0

Just echo asXML() Вы можете увидеть свою ошибку во втором файле.

echo $xml->asXML(); 

Вот простой учебник по SimpleXML: http://php.net/manual/en/simplexml.examples-basic.php

+0

В статье, в которой это не сработало, ничего не отозвалось –

0

Espace ваш appostrophe:

<?php 
    $text = file_get_contents("." . $filename); 
    $text = str_replace("'", "&apos;", $text); 
    $xml = simplexml_load_string($text); 
    echo $xml->body; 
?> 

Кроме того, кто-то имел подобную проблему (без аварии, но мусор символов) и придумал такое же решение. Немного позже в этой теме форума они спекулируют на utf8_encode и utf8_decode, которые вы также можете попробовать. Ссылка: http://board.phpbuilder.com/showthread.php?10359181-RESOLVED-SimpleXML-apostrophe-problem&p=10886946&viewfull=1#post10886946

+0

Это здорово, но что, если есть другие символы, которые могут вызвать эту проблему? –

+0

попробуйте utf8_decode() вместо str_replace(), это может быть проблемой. –

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