加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Nokogiri和regex在Ruby XML文档中解析编码

发布时间:2020-12-17 02:12:35 所属栏目:百科 来源:网络整理
导读:我试图用嵌入在标签中的标签来解析 XML,比如使用Nokigiri和 Ruby的标签: segTrennmesser phlt;I.FIGREF ITEM=quot;3quot; FORMAT=quot;PARENTHESISquot;gt;/phbpt i="1"lt;I.FIGTARGET TARGET=quot;CIADDAJAquot;gt;/bptept i="1"lt;/I.FIGREFgt;/ept/seg
我试图用嵌入在标签中的标签来解析 XML,比如使用Nokigiri和 Ruby的标签:

<seg>Trennmesser <ph>&lt;I.FIGREF ITEM=&quot;3&quot; FORMAT=&quot;PARENTHESIS&quot;&gt;</ph><bpt i="1">&lt;I.FIGTARGET TARGET=&quot;CIADDAJA&quot;&gt;</bpt><ept i="1">&lt;/I.FIGREF&gt;</ept></seg>

在这种情况下,我只需要“嵌入式标签”中的“Trennmesser”一词.

在第二个例子中:

<seg>Hilfsmittel <ph>&lt;F34@Z7@Lge&gt;</ph>X <ph>&lt;F0&gt;</ph>= 0,5mm zwischen    Beschleunigerwalze <ph>&lt;F34@Z7@Lge&gt;</ph>D<ph>&lt;F0&gt;</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>&lt;F34@Z7@Lge&gt;</ph>X <ph>&lt;F0&gt;</ph>= 0,5mm zwischen    Beschleunigerwalze <ph>&lt;F34@Z7@Lge&gt;</ph>D<ph>&lt;F0&gt;</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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读