Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html XML中的换行符?_Html_Xml_Parsing_Line_Break - Fatal编程技术网

Html XML中的换行符?

Html XML中的换行符?,html,xml,parsing,line,break,Html,Xml,Parsing,Line,Break,我是web开发的初学者,我正在尝试在XML文件中插入换行符。 这就是我的XML的样子: <musicpage> <song> <title>Song Title</title> <lyric>Lyrics</lyric> </song> <song> <title>Song Title</title> <

我是web开发的初学者,我正在尝试在XML文件中插入换行符。 这就是我的XML的样子:

<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>

歌曲名称
歌词
歌曲名称
歌词
歌曲名称
歌词
歌曲名称
歌词
我想在歌词的句子之间换行。我尝试了从/n开始的一切, 和其他类似的代码,PHP解析等等,什么都不管用!在网上搜索了几个小时,似乎找不到答案。我正在使用XML使用Javascript将数据插入HTML页面

有人知道如何解决这个问题吗

这是我用来将XML数据插入HTML页面的JS代码:

<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>

if(window.XMLHttpRequest){
xhttp=newXMLHttpRequest();
}否则{
xhttp=新的ActiveXObject(“Microsoft.XMLHTTP”);
}
open(“GET”,“xml/musicpage_-lysps.xml”,false);
xhttp.send(“”);
xmlDoc=xhttp.responseXML;
var x=xmlDoc.getElementsByTagName(“歌曲”);

对于(i=0;i如果使用CDATA,我认为可以将换行符直接嵌入XML中。例如:

<song>
    <title>Song Title</title>
    <lyric><![CDATA[Line 1
Line 2
Line 3]]></lyric>
</song>

歌曲名称

在行尾,只需添加以下特殊字符:
&xD;

该特殊字符定义了回车符。


<song>
  <title>Song Tigle</title>
  <lyrics>
    <line>The is the very first line</line>
    <line>Number two and I'm still feeling fine</line>
    <line>Number three and a pattern begins</line>
    <line>Add lines like this and everyone wins!</line>
  </lyrics>
</song>
松虎虎 这是第一行 第二,我仍然感觉很好 第三,一个模式开始 添加这样的行,每个人都会赢!
(在音域中以家乡的曲调演唱)


如果是我的,我也会用XML元素来包装合唱和诗句。

在XML中,换行符是一个普通字符。您可以这样做:

<xml>
  <text>some text
with
three lines</text>
</xml>
或者,您可以使用CSS在新行字符处强制换行:

div.lines {
    white-space: pre-line;
}

@icktoofay与CData非常接近

<myxml>
    <record>
        <![CDATA[
        Line 1 <br />
        Line 2 <br />
        Line 3 <br />
        ]]>
    </record>
</myxml>

第2行
第3行
]]>
在XML中:使用文字换行符,不需要其他任何东西

换行符将被保留,以便Javascript读取[1]。请注意,任何缩进空格和前面或后面的换行符也会被保留(您没有看到它们的原因是HTML/CSS默认情况下会将空格折叠为单空格字符)

然后最简单的方法是:在HTML:donothing中,只使用CSS来保留换行符

.msg_body {
    white-space: pre-line;
}
但这也保留了XML文档中的额外行,在IE6或7[2]中不起作用

因此,自己清理空白;这是一种方法(为了清晰起见,换行符-Javascript对有或没有它们都很满意[3])[4]

然后用

.msg_body {
    white-space: pre; // for IE 6 and 7
    white-space: pre-wrap; // or pre-line
}
或者,在另一个JavaScript
.replace之后添加一个
.replace(/\r?\n/g,

(旁注:像那样使用document.write()也不理想,有时容易受到跨站点脚本攻击,但这是另一个问题。关于这个问题,如果您想使用替换为

的变体,您必须避开
)在生成

之前。)

--

[1] 参考:章节“元素空白处理”和“XML架构空白控制”

[2]

[3] 除了Javascript语法中的一些地方,分号插入特别令人讨厌


[4] 我在Linux Node.js中编写并测试了这些regexp(它使用与Chrome“V8”相同的Javascript引擎)。有些浏览器执行regexp时存在一点风险。(我的测试字符串(Javascript语法)
“\n\nfo bar baz\n\n\t更多歌词\n很好\n\n”

只需在行尾使用
br

第二行
]>
<description><![CDATA[first line<br/>second line<br/>]]></description>

如果您使用CSS来设置样式(不推荐)。您可以使用
显示:block;
,但是,这只会在设置样式的元素之前和之后给您换行符。

我尝试过,但是XML文件不会加载到HTML页面中(导致加载XML的地方出现空白):(这在没有CDATA的情况下非常有效。我也试过了,但是代码在HTML页面中根本没有显示,无论是换行符还是文字类型;但是其余的XML数据加载都非常完美。@ew89:源代码中的换行符不会导致呈现的HTML中出现换行符。对于HTML,您需要

标记。@Scorchin:您可以使用一个简单的文本换行符。除了在属性值中,不需要对其进行编码。有没有办法使XML文件/源代码中的换行符能够在HTML页面中呈现?这是因为我是为一个客户做的,而她没有任何HTML知识。我尝试使用文本换行符,但所有内容最终都显示在一个lin中e、 不,不起作用。但我会进一步研究。谢谢!@ew89:当然有效。你只是试图解决错误的问题。这是真正的答案。如果一切正常,一个简单的换行符就可以了。一些解析器有一个标志,可以选择性地忽略空白,这样你就可以使用它缩进XML文件,但我怀疑这是你的问题问题。(这是对格式的滥用。)XML中的空白很重要,包括用于缩进的制表符/空格。请发布一些代码,说明您如何使用XML。您能澄清一件事吗?您在构建XML文件时有困难吗(如果您在哑文本编辑器中打开它,您看到您希望看到的内容了吗?)或者您在浏览器中呈现文本时遇到问题。我怀疑问题在于浏览器将任何空白(空格、制表符、换行符等)呈现为单个空格,因此问题不在于XML,而在于文本。您需要添加

(注意后面的斜杠)要在浏览器中呈现,或者您需要将其写入
块。XML与我在页面顶部发布的内容非常相似,我添加了用于插入XML的Javascript代码
[get lyric...].nodeValue
    .replace(/^[\r\n\t ]+|[\r\n\t ]+$/g, '')
    .replace(/[ \t]+/g, ' ')
    .replace(/ ?([\r\n]) ?/g, '$1')
.msg_body {
    white-space: pre; // for IE 6 and 7
    white-space: pre-wrap; // or pre-line
}
<description><![CDATA[first line<br/>second line<br/>]]></description>