Zeilenumbruch in XML?
Ich bin ein Anfänger in web-Entwicklung, und ich versuche, einfügen von Zeilenumbrüchen in meiner XML-Datei.
Dies ist, was mein XML sieht so aus:
<musicpage>
<song>
<title>Song Title</title>
<lyric>Lyrics</lyric>
</song>
<song>
<title>Song Title</title>
<lyric>Lyrics</lyric>
</song>
<song>
<title>Song Title</title>
<lyric>Lyrics</lyric>
</song>
<song>
<title>Song Title</title>
<lyric>Lyrics</lyric>
</song>
</musicpage>
Ich möchte die Linie Pausen zwischen den Sätzen für die Texte. Ich habe versucht, alles von /n und andere codes, ähnlich wie es von PHP Parsen, etc., und nichts funktioniert! Gewesen googeln online für Stunden und kann nicht scheinen, um die Antwort zu finden. Ich bin mit dem XML zum einfügen von Daten in eine HTML-Seite mit Javascript.
Weiß jemand, wie dieses problem zu lösen?
- Und dies ist der JS code, den ich benutzt zum einfügen die XML-Daten in die HTML-Seite:
<script type="text/javascript">
if (window.XMLHttpRequest) {
xhttp=new XMLHttpRequest();
} else {
xhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET","xml/musicpage_lyrics.xml",false);
xhttp.send("");
xmlDoc=xhttp.responseXML;
var x=xmlDoc.getElementsByTagName("songs");
for (i=0;i<x.length;i++) {
document.write("<p class='msg_head'>");
document.write(x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue);
document.write("</p><p class='msg_body'>");
document.write(x[i].getElementsByTagName("lyric")[0].childNodes[0].nodeValue);
document.write("</p>");
}
</script>
Kommentar zu dem Problem - Öffnen
Poste bitte etwas code zeigen, wie Sie mit dem XML.
Können Sie eine Sache klarstellen? Haben Sie Probleme Aufbau der XML-Datei (wenn Sie öffnen Sie es in einen stummen text-editor, siehst du, was du erwarten zu sehen?) oder werden Sie Schwierigkeiten haben, Rendern Sie den text in den browser. Mein Verdacht ist, dass das problem ist, dass der Browser das Rendern von Leerraum (Leerzeichen, Tabulatoren, Zeilenumbrüche, etc.) als einen einzigen Raum, also das problem ist nicht das XML, es ist der text. Sie müssen hinzufügen
<br />
(beachten Sie den nachgestellten Schrägstrich), um es Rendern im browser oder Sie schreiben es auf ein <pre></pre>
- block. Die XML ist so ziemlich das, was ich weiter oben gepostet auf der Seite, und ich habe den Javascript-code, den ich benutzt zum einfügen die XML-Daten in die HTML-Seite (nur, falls es benötigt wird).
@ew89: Die XML-Datei, die Sie geschrieben, scheint noch nicht alle Zeilenumbrüche innerhalb des <Lyrik> tags an alle... was erwartest du?
@ew98: Aber durch die Vereinfachung, die Sie entfernt haben, wie du schon einfügen von newlines in deine XML, drehen Sie es einfach in eine generische Stück von XML. Die Zeilenumbrüche, die Sie einsetzen, sind entscheidend, um das problem auf der hand - es wäre nützlich, um zu sehen, was du tust, so konnten wir überprüfen, als richtig oder falsch. Ansonsten ist es nur XML, und ich weiß, was XML aussieht.
InformationsquelleAutor der Frage ew89 | 2010-06-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
@icktoofay war in der Nähe mit der CData -
InformationsquelleAutor der Antwort Chase Florell
In XML ein Zeilenumbruch ist ein normaler Charakter. Sie können dies tun:
und den Inhalt
<text>
werdenWenn dies bei Ihnen nicht funktioniert, machst du etwas falsch. Spezielle "workarounds", wie die Codierung der Zeilenumbrüche sind unnötig. Sachen wie
\n
wird nicht funktionieren, auf der anderen Seite, da die XML hat keine escape-Sequenzen*.* Beachten Sie, dass


ist die Zeichen-entity repräsentiert einen Zeilenumbruch in serialisiert XML. "XML hat keine escape-Sequenzen" bedeutet, dass die situation bei der Interaktion mit einem DOM-Dokument, Einstellung node-Werte über das DOM-API.Dies ist, wo weder


noch Dinge wie\n
wird funktionieren, aber ein tatsächlichen neue-Zeile-Zeichen wird. Wie dieser Charakter am Ende das serialisierte Dokument (also "Datei") ist bis zu der API und sollten nicht dich betreffen.Da Sie scheinen sich zu Fragen, wo Sie Ihre Zeilenumbrüche gehen in HTML: schauen Sie in Ihren Quellcode, da sind Sie. HTML ignoriert Zeilenumbrüche im Quellcode. Verwenden
<br>
- tags erzwingen von Zeilenumbrüchen auf dem Bildschirm.Hier ist eine JavaScript-Funktion, fügt
<br>
in ein multi-line string:Alternativ können Sie erzwingen, dass Zeilenumbrüche an neue-Zeile-Zeichen mit CSS:
InformationsquelleAutor der Antwort Tomalak
Am Ende Ihrer Zeilen, fügen Sie einfach die folgenden Sonderzeichen:

Dass Sonderzeichen definiert, die carriage-return-Zeichen.
InformationsquelleAutor der Antwort KushalP
In der XML: verwenden Sie wörtliche Zeilenumbrüche, nichts anderes benötigt es.
Die Zeilenumbrüche werden beibehalten, für Javascript -, Sie zu Lesen [1]. Beachten Sie, dass jede Einzug-Räume und die vorgelagerte oder nachfolgende Zeilenumbrüche erhalten bleiben (der Grund, warum Sie nicht sehen, wie Sie ist, HTML/CSS zusammenbricht whitespace in einzelne Leerzeichen-Zeichen standardmäßig).
Dann die einfachste Möglichkeit ist: Im HTML: nichts tun, einfach nur mit CSS zu bewahren, die Zeilenumbrüche
Aber das behält auch Ihre zusätzlichen Zeilen aus dem XML-Dokument, und funktioniert nicht in IE 6 oder 7 [2].
So sauber, die whitespace-Zeichen selbst ein; dies ist ein Weg, es zu tun (Zeilenumbrüche für Klarheit - Javascript ist glücklich, mit oder ohne Sie [3]) [4]
dann bewahren diese Zeilenumbrüche mit
oder, anstelle dessen CSS, fügen Sie ein
.replace(/\r?\n/g, '<br />')
nach dem anderen JavaScript -.replace
s.(Anmerkung: die Verwendung von Dokument.write() ist auch nicht ideal und manchmal anfällig für cross-site-scripting-Attacken, aber das ist ein anderes Thema. In diesem Zusammenhang beantworten, wenn Sie wollten, verwenden Sie die Variante, die ersetzt mit
<br>
würden Sie haben zu entkommen<
,&
(,>
,"
,'
) vor Erzeugung der<br>
s).--
[1] Referenz: § § "Element" White Space Handling" und "XML-Schema-White-Space-Control" http://www.usingxml.com/Basics/XmlSpace#ElementWhiteSpaceHandling
[2] http://www.quirksmode.org/css/whitespace.html
[3] außer ein paar Plätzen in Javascript-syntax, wo seine Semikolon einfügen, ist besonders ärgerlich.
[4] habe ich es geschrieben und getestet, diese regexps in Linux Node.js (was nutzt das gleiche Javascript-engine wie Chrome, "V8"). Es gibt ein kleines Risiko, einige browser führt regexps anders. (Mein test-string (javascript-syntax)
"\n\nfoo bar baz\n\n\tmore lyrics \nare good\n\n"
)InformationsquelleAutor der Antwort idupree
verwenden Sie einfach
<br>
am Ende deiner Zeilen.InformationsquelleAutor der Antwort Abolfazl Beigi
(Gesungen nach der Melodie von zu Hause auf der Range)
Ob es meine war, ich würde wickeln Sie die Refrains und Strophen, die in XML-Elemente als auch.
InformationsquelleAutor der Antwort Robusto
Wenn Sie mit CDATA, Sie einbinden konnte die Zeilenumbrüche direkt in die XML-denke ich. Beispiel:
InformationsquelleAutor der Antwort icktoofay
InformationsquelleAutor der Antwort sohaib
Wenn Sie mit CSS-style (Nicht empfohlen). Sie können
display:block;
dies jedoch wird Ihnen nur Zeilenumbrüche vor und nach das Stil-element.InformationsquelleAutor der Antwort Ben