我试图用嵌入在标签中的标签来解析
XML,比如使用Nokigiri和
Ruby的标签:
<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>
在这种情况下,我只需要“嵌入式标签”中的“Trennmesser”一词.
在第二个例子中:
<seg>Hilfsmittel <ph><F34@Z7@Lge></ph>X <ph><F0></ph>= 0,5mm zwischen Beschleunigerwalze <ph><F34@Z7@Lge></ph>D<ph><F0></ph> und Trennmesser schieben.</seg>
封闭/ ph和开放ph标签内的单词也很有趣,因此正则表达式需要提取字符串“Hilfsmittel 0,5mm zwischen Beschleunigerwalze und Trennmesser schieben”.并丢弃其他一切.
我还在这里上传了部分文件:
http://pastebin.com/Q8CdnASz
最佳答案 在irb中尝试这个
require 'nokogiri'
x = Nokogiri::XML.parse('<seg>Hilfsmittel <ph><F34@Z7@Lge></ph>X <ph><F0></ph>= 0,5mm zwischen Beschleunigerwalze <ph><F34@Z7@Lge></ph>D<ph><F0></ph> und Trennmesser schieben.</seg>')
x.xpath('//seg').children.reject {|x| x.element?}.join {|x| x.content}
对我来说这是输出
=> "Hilfsmittel X = 0,5mm zwischen Beschleunigerwalze D und Trennmesser schieben."
这里的想法是我们迭代< seg>的孩子了.标签,拒绝那些元素本身(< ph>),这应该只留下内容元素.获取结果数组,并将内容元素作为一个字符串连接在一起.
请注意,输出与您描述的略有不同,因为两个标签之间还有一个额外的D和X.