nokogiri:xml到html

nokogiri:xml到html,html,xml,transform,nokogiri,Html,Xml,Transform,Nokogiri,我只是想做一些直接的转换(几乎只是搜索和替换),但我很难把东西放在适当的位置——我最终会发现链接不合适,内容重复。我肯定我在尝试遍历xml时做了一些愚蠢的事情:) 我正在尝试: builder = Nokogiri::HTML::Builder.new do |doc| doc.html { doc.body { doc.div.wrapper! { doc.h1 "Short" xm.css('paragraph').each do |para|

我只是想做一些直接的转换(几乎只是搜索和替换),但我很难把东西放在适当的位置——我最终会发现链接不合适,内容重复。我肯定我在尝试遍历xml时做了一些愚蠢的事情:)

我正在尝试:

builder = Nokogiri::HTML::Builder.new do |doc|
 doc.html {
  doc.body {
   doc.div.wrapper! {
    doc.h1 "Short"

      xm.css('paragraph').each do |para|

        doc.h3.para(:id => para['number']) { doc.text para['number'] }

        doc.p.narrativeparagraph {

           xm.css('paragraph inner-section').each do |section|
              doc.span.innersection { doc.text section.content 

           xm.css('inner-section xref').each do |xref|
              doc.a(:href => "#" + xref['number']) { doc.text xref['number'] }
           end

           xm.css('paragraph inner-text').each do |innertext|
               doc.span.innertext { doc.text innertext.content }
           end

                } end #inner-section                 

                }

          end#end paragraph
        }#end wrapper
      }#end body
    }#end html
  end#end builder
关于:


胡说八道
废话两个废话废话
废话三
废话四个废话
废话五个废话
等等
要创建:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC- html40/loose.dtd">
<html>
<body>
<div id="wrapper">
<h1>Short</h1>
<h3 class="para" id="1">1</h3>
<p class="narrativeparagraph">
 <span class="innersection"> blah one blah <a href="#link1location">link1location</a>
 <span class="innertext"> blah two blah blah </span>
     blah three</span>
</p>

<h3 class="para" id="2">2</h3>
<p class="narrativeparagraph">
 <span class="innersection"> blah four blah <a ref="#link2location">link2location</a>
 <span class="innertext">blah five blah blah </span>
     blah six</span></p>

短
1.

胡说八道 废话两个废话废话 废话三

2.

布拉四布拉链接2位置 废话五个废话 等等

我一直在尝试各种各样的方法来实现这一点,基本的html结构很好,但是段落中的孩子们都很混乱——如果有任何帮助,我们将不胜感激。 当做
Ritchie有很多方法可以做到这一点,但是如果你坚持使用Builder方法,我会制作一个函数,将
转换为

builder = Nokogiri::HTML::Builder.new do |doc|
  doc.html {
    doc.body {
      doc.div.wrapper! {
        doc.h1 "Short"
        xm.css('paragraph').each do |para|
          doc << translate_paragraph para.dup
        end #para
    }#end body
  }#end html
end#end builder

def translate_paragraph(p)
  # Change '<paragraph>' to '<p>'
  p.name = 'p'

  # Change '<innersection>' to '<span class='innersection'>'
  p.css('innersection').each { |tag|
    tag.name = 'span'
    tag['class'] = 'innersection'
  }

  # ...
end
builder=Nokogiri::HTML::builder.new do | doc|
doc.html{
博士身体{
博士,div.wrapper{
文件h1“短”
xm.css(‘段落’)。每个都做|段落|

记录和我在同一条船上的任何noobs——我已经放弃了使用Builder,我正在慢慢地但肯定地使用:frag.xpath(//段落”)。每个{div | div.name=“p”div.set_属性(“class”,“叙述段落”)}frag.css('internal-section xref')。每个{xref xref | xref.name=“a”xref.set_属性(“href”,“#”+xref['number']));xref.content=xref['number']}您作为示例给出的html-这就是您希望它构建的内容吗?您能否提供一个实际结果的示例?
builder = Nokogiri::HTML::Builder.new do |doc|
  doc.html {
    doc.body {
      doc.div.wrapper! {
        doc.h1 "Short"
        xm.css('paragraph').each do |para|
          doc << translate_paragraph para.dup
        end #para
    }#end body
  }#end html
end#end builder

def translate_paragraph(p)
  # Change '<paragraph>' to '<p>'
  p.name = 'p'

  # Change '<innersection>' to '<span class='innersection'>'
  p.css('innersection').each { |tag|
    tag.name = 'span'
    tag['class'] = 'innersection'
  }

  # ...
end