如何在XML中添加换行符



我有一个生成XML数据并将其保存到文件的脚本:

result_XML = Nokogiri::XML::Builder.new do |xml|
  xml.root {
    ...
    xml.job {
      xml.job_id            job_id
      xml.job_description   job_description
    }
  }
end
File.open("result.xml", 'w') { |f| f.write(result_XML.to_xml) }

job_description中,我有可以包含换行符("n")的文本。我想在打开结果文件时显示它们,但是当我打开它时,所有描述都显示为一个字符串,没有任何中断。

我尝试了&#xD;, &#xA;, <[!CDATA[ ... ]]>,但没有工作。

例子:

job_id = 109504
job_description = "Requirements:n 1. Be polite.n 2. 20+ years old."
result_XML = Nokogiri::XML::Builder.new do |xml|
  xml.root {
    xml.job {
      xml.job_id_            job_id
      xml.job_description_   job_description
    }
  }
end
File.open("result.xml", 'w') { |f| f.write(result_XML.to_xml) }

现在如果我在浏览器中打开file result。xml,我会得到:

<root>
  <job>
    <job_id>109504</job_id>
    <job_description>Requirements: 1. Be polite. 2. 20+ years old.</job_description>
  </job>
</root>

和一个错误,这个XML文件没有任何样式信息。

我要的是:

<root>
  <job>
    <job_id>109504</job_id>
    <job_description>
      Requirements: 
      1. Be polite. 
      2. 20+ years old.
    </job_description>
  </job>
</root>

<br/>工作,但它看起来像这样:

<root>
  <job>
    <job_id>109504</job_id>
    <job_description>
      Requirements: 
      <br/>
      1. Be polite. 
      <br/>
      2. 20+ years old.
      <br/>
    </job_description>
  </job>
</root>

如果在职位描述中有很多换行符,它会变得难以阅读。所以我不想显示<br/>标签。

非常感谢!

如果您希望XML树以特定的方式呈现(例如使用换行符),而不依赖于浏览器的默认XML呈现模型(可能因浏览器而异),您最好通过显式地将结果转换为HTML来自己完成。

例如:

require 'nokogiri'
result_XML = Nokogiri::XML::Builder.new do |xml|
  xml.root {
    xml.job {
      xml.job_id            1
      xml.job_description   %{ 
               my job
               another line
               one more line
      }
    }   
  }
end
result_HTML = Nokogiri::HTML::Builder.new do |doc|
  doc.html {
    doc.head {
      doc.script(:src => 'https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js')
    }
    doc.body(:onload => 'some_func();') {
      doc.pre(:class => "prettyprint lang-xml") {
        doc.text result_XML.to_xml
      }
    }
  }
end
File.open("result.html", 'w') { |f| f.write(result_HTML.to_html) }

或者,如果您仍然希望使用.xml作为主要输出,您可以向它添加一个XSTL样式表:

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

将使浏览器动态地将其转换为HTML文档。

(注意!"xml2html。

相关内容

  • 没有找到相关文章

最新更新