使用Nokogiri查找带有空格的XML文本值

时间:2014-12-16 03:11:03

标签: ruby xml xpath nokogiri

如何使用xpath找到Fetus Summary节点?

<container flag="SEPARATE">
            <relationship>CONTAINS</relationship>
            <concept>
              <value>125008</value>
              <scheme>
                <designator>DCM</designator>
              </scheme>
              <meaning>Fetus Summary</meaning>
            </concept>
</container>

这不起作用:

xml.xpath( '//*[.="Fetus Summary"]' )

但是,当使用没有空格的文本值时,类似的代码会这样做。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

尝试使用normalize-space()功能,例如:

//*[normalize-space(.)="Fetus Summary"]

答案 1 :(得分:0)

您的原始代码可以与您共享的XML一起使用:

require 'nokogiri'
doc = Nokogiri.XML '
    <container flag="SEPARATE">
                <relationship>CONTAINS</relationship>
                <concept>
                  <value>125008</value>
                  <scheme>
                    <designator>DCM</designator>
                  </scheme>
                  <meaning>Fetus Summary</meaning>
                </concept>
    </container>
'

puts doc.at_xpath( '//*[.="Fetus Summary"]' )
#=> <meaning>Fetus Summary</meaning>

即使您在文档的开头有XML声明<?xml version="1.0" encoding="ISO-8859-1"?>,这也有效。

我的猜测是你的文档有空格字符,看起来像空格或制表符但不是。你从哪里获得XML? (使用open-uri或通过文件在互联网上播放?)是否可以将p my_xml_string的结果发布到您的问题中,该问题会对任何复杂字符进行编码?