html
  • ruby
  • string
  • nokogiri
  • 2013-12-18 92 views 0 likes 
    0

    我想對HTML字符串的:做一個簡單的拆分,同時保留底層的HTML格式。字符串處理html輸出,同時保留標記

    假設我有結構化的,像這樣的數據,在HTML渲染:

    數據列:用於B柱

    但數據底層的HTML可能是

    <p>Data for <span style="font-weight: bold">column a: data</span> for column b</p> 
    

    而且我的輸出最好是

    cola = '<p>Data for <span style="font-weight: bold">column a</span></p>' 
    colb = '<p><span style="font-weight: bold">data</span> for column b</p>' 
    

    或更復雜的例子。

    我正在使用Ruby & Nokogiri。

    +0

    不要你的需要..你可以更具體一點?在哪裏':'離開這裏' HTML'? –

    +1

    你的例子沒有意義。當你正在做的是在關閉''標籤後面添加一個逗號時,爲什麼你甚至在意分割冒號? – cpjolicoeur

    +0

    我已經更新了一個例子,顯示更多的東西,我試圖完成的文字。 –

    回答

    0
    doc = Nokogiri::HTML::fragment '<p>Data for <span style="font-weight: bold">column a: data</span> for column b</p>' 
    
    a, b = doc.css('span').text.split ':' 
    
    cola = '<p>Data for <span style="font-weight: bold">' + a + '</span></p>' 
    colb = '<p><span style="font-weight: bold">' + b + '</span> for column b</p>' 
    
    +0

    謝謝,但這隻適用於給出的例子,而不適用於一般情況。 –

    +0

    對文本使用'doc.at('p')。children [0] .text','doc.at('p')。children [2] .text' – NARKOZ

    0

    我也終於解決了這個問題。 My solution on Github

    基本上,我做了Nokogiri片段的前序遍歷,只搜索文本節點,直到找到我的分隔符。一旦找到,我就像任何字符串一樣分割文本節點。然後我刪除了在前序遍歷期間隨後遇到的所有節點。這清除了「右側」。

    然後,我跟隨了與上面相同的初始Nokogiri片段的後序遍歷,刪除所有節點,直到我遇到包含我的分隔符的文本節點。這清除了「左側」

    相關問題