2010-07-16 9 views
1

OK. Voici le code. La ligne de suivi des erreurs pointe vers le caractère semblable à [] comme problème. J'ai mis la page en UTF-8 et ça ne marche toujours pas.Problème dans le contenu XML ..?

Non, je ne peux pas simplement sortir la voiture []. C'est une API sur laquelle je travaille, donc je ne peux pas éditer le contenu. Seulement le livrer. Y at-il un travail autour? Les balises CDATA ne font pas une chose ici ..

-Edit-

Ceci est la seule ligne dans l'erreur de sortie. Voici la source PHP:

 $output .= "<activity>\n"; 
     $result = mysql_query($query, $con); 
     while($row = mysql_fetch_array($result)){ 
      $result2 = mysql_query("SELECT * FROM sites WHERE id = '".$row['u_to']."'", $con); 
      $row2 = mysql_fetch_array($result2); 

      $output .= "<item> \n"; 
      $output .= "<item_type>" . $row['u_type'] . "</item_type> \n"; 
      $output .= "<item_to_page_id>" . $row['u_to'] . "</item_to_page_id> \n"; 
      $output .= "<item_to_page_url><![CDATA[".$row2['s_url']."]]></item_to_page_url> \n"; 
      $output .= "<item_to_page_title><![CDATA[".$row2['s_title']."]]></item_to_page_title> \n"; 
      $output .= "<item_date>" . $row['u_date'] . "</item_date> \n"; 
      $output .= "</item> \n"; 
     } 
     $output .= "</activity>\n"; 

Les requêtes MySQL fonctionnent très bien. Si je limite la requête MySQL (non incluse dans cet extrait) afin qu'elle ne produise pas autant de résultats (ce qui signifie que le résultat avec l'erreur provoquant le caractère n'est pas retourné), cela fonctionne bien. Mais j'ai besoin de cela pour être à l'épreuve des balles, donc j'ai besoin de trouver une solution de contournement pour ce personnage ... ou tout ce qui cause le problème.

+0

Y at-il rien d'autre autour de cette ligne? Peut-être que l'erreur est rapportée sur la mauvaise ligne, et est-ce que quelques lignes avant d'après celle-ci? –

+0

Certainement rien de mal avec cet extrait de XML que vous avez posté. Est-ce le tout ou juste un morceau? Pourrait aider à publier le morceau entier de XML si vous l'avez. –

+0

J'ai été édité pour vous donner la source, mais cette ligne est la seule ligne que l'erreur me donne. –

Répondre

1

Essayez avec DOM, juste pour voir si cela fait une différence:

$dom = new DOMDocument; 
$dom->formatOutput = TRUE; 
$dom->preserveWhiteSpace = FALSE; 
$dom->loadXML('<activity/>'); 

$result = mysql_query($query, $con); 
while($row = mysql_fetch_array($result)){ 

    $result2 = mysql_query("SELECT * FROM sites WHERE id = '".$row['u_to']."'", $con); 
    $row2 = mysql_fetch_array($result2); 

    $item = $dom->createElement('item'); 

    $item->appendChild(
     $dom->createElement('item_type', $row['u_type'])); 

    $item->appendChild(
     $dom->createElement('item_to_page_id', $row['u_to'])); 

    $cData = $dom->createCDATASection($row2['s_url']); 
    $node = $dom->createElement('item_to_page_url'); 
    $node->appendChild($cData); 
    $item->appendChild($node); 

    $cData = $dom->createCDATASection($row2['s_title']); 
    $node = $dom->createElement('item_to_page_title'); 
    $node->appendChild($cData); 
    $item->appendChild($node); 

    $item->appendChild(
     $dom->createElement('item_date', $row['u_date'])); 

    $dom->documentElement->appendChild($item); 
} 
echo $dom->saveXML(); 

Sur un Sidenote: DOM traitera la plupart des caractères que vous utilisez comme par lui-même de nœuds texte. Il va également convertir des entités comme & en &amp; automatiquement. Donc, vous n'aurez peut-être pas besoin des sections CDATA.