2013-06-05 4 views
0

J'ai une chaîne comme ceci:Comment ajouter un saut de ligne à une longue chaîne multiligne?

my_xml = ''' 
     <?xml version="1.0" encoding="utf-8" ?> \n 
     <entries> \n 
     <entry>1</entry> \n 
     <entry>2</entry> \n 
     </entries> 
    ''' 
return HttpResponse(my_xml) 

Ceci est ma sortie, il a été imprimé sans nouvelle ligne et sans balises xml:

1 2 

Comment pourrions-nous ajouter une nouvelle ligne en Python et faire l'interprète du navigateur xml tags et les imprimer?

+0

Puisque Martijn Pieters n'a pas couvert cet aspect dans sa réponse: '\ n' est comment écrire un caractère de nouvelle ligne dans Python. C'est-à-dire, ce que vous avez écrit est correct, si un caractère de nouvelle ligne est réellement ce dont vous avez besoin dans ces endroits. – kampu

+3

@kampu: la triple-citation * aussi * ajoute des retours à la ligne. L'exemple de chaîne 's' comporte au total 4 caractères de nouvelle ligne. –

+0

cela pourrait-il être que 's' est correct et a le nombre correct de nouvelles lignes, mais dès qu'il est retourné comme' HttpResponse (s) 'il s'est affiché incorrectement. – oleg

Répondre

8

Vous regardez la sortie dans un navigateur; Les navigateurs HTML prennent en compte les espaces de début de ligne, en regroupant les caractères d'espaces successifs pour former un espace.

Votre navigateur interprète la réponse sous forme de données au format HTML, utilisez <br/> tags à la place:

s = """ this is line 1<br/> 
    this is line 2<br/> 
    and other lines ...""" 

Si vous vous attendiez à voir seulement les nouvelles lignes, regardez la réponse la source code au lieu; les nouvelles lignes sont là.

Si vous voulez voir la sortie XML dans un navigateur, vous devez définir un en-tête de type de contenu (text/xml) de sorte que le navigateur sait que vous envoyez XML au lieu de HTML:

return HttpResponse(s, content_type='text/xml') # Assumes you are using Django 

Votre navigateur utilisera par défaut feuille de style pour afficher les données XML (généralement sous forme d'arborescence avec des sections réductibles). Vous pouvez utiliser une feuille de style XML (XSLT) pour remplacer ce comportement. Ajouter un en-tête de feuille de style:

<?xml-stylesheet type="text/xsl" href="script.xsl" ?> 

le navigateur va chercher la feuille de style nommé et l'appliquer à votre XML.

+0

Le '
' fonctionne parfaitement.Mais si mes lignes sont des balises HTML, il ne les affichera pas, il imprime juste newline – Drwhite

+1

@Drwhite: désolé, je n'arrive pas à analyser ce que vous essayez dire là. –

+1

@Drwhite: C'est ce que le navigateur * fait *; il interprète les balises HTML pour former un texte formaté. '
' est la balise HTML pour un saut de ligne. –

Questions connexes