<ph>
標記內的內容已被編碼以保留保留字符<
和>
。
一個乾淨的方式來處理,這是爲了讓引入nokogiri重新分析這些塊轉化成XML格式:
require 'nokogiri'
doc = Nokogiri::XML('<seg>Trennmesser <ph><I.FIGREF ITEM="3" FORMAT="PARENTHESIS"></ph><bpt i="1"><I.FIGTARGET TARGET="CIADDAJA"></bpt><ept i="1"></I.FIGREF></ept></seg>')
ph = Nokogiri::XML::DocumentFragment.parse(doc.at('seg ph').content)
puts ph.to_xml
,它輸出以下節點,顯示出引入nokogiri重建該片段正確:
<I.FIGREF ITEM="3" FORMAT="PARENTHESIS"/>
對於提取<seg>
標記內的文字:
doc.at('//seg/text()').text
=> "Trennmesser "
在處理HTML或XML時,預先假定正則表達式將是提取某些內容的最佳路徑,這絕對不是好事。 HTML和XML都過於不規則和「靈活」(靈活的地方意味着它常常令人煩惱地變形或以完全獨特和意想不到的方式定義)。
要獲得第二個問題的<seg>
標籤內的全部內容:
require 'nokogiri'
doc = Nokogiri::XML('<seg>Hilfsmittel <ph><[email protected]@Lge></ph>X <ph><F0></ph>= 0,5mm zwischen Beschleunigerwalze <ph><[email protected]@Lge></ph>D<ph><F0></ph> und Trennmesser schieben.</seg>')
seg = Nokogiri::XML::DocumentFragment.parse(doc.at('seg').content)
puts seg.content
,輸出:
Hilfsmittel @[email protected]>X = 0,5mm zwischen Beschleunigerwalze @[email protected]>D und Trennmesser schieben.