Nokogiri css 没有找到元素

Nokogiri css don’t find element

我在 Nokogiri 中遇到问题。这是我的 XML:

<nfeProc>
  <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
    <infNFe Id="NFe123" versao="3.10">
      <ide>
        <name>25</name>
      </ide>
    </infNFe>
  </NFe>
</nfeProc>

我想找到 ide 标签,但只能找到 nfeProc 标签。

require 'nokogiri'

doc = Nokogiri::XML(File.open("sample.xml"))
doc.css('ide')
=> []

但是,当我将属性添加到 nfeProc 标签时,效果很好。

<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe">
  <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
    <infNFe Id="NFe123" versao="3.10">
      <ide>
        <name>25</name>
      </ide>
    </infNFe>
  </NFe>
</nfeProc>

require 'nokogiri'

doc = Nokogiri::XML(File.open("sample.xml"))
doc.css('ide')
=> #<Nokogiri::XML::Document:0x19226c4 name="document" children=[#<Nokogiri::XML::Ele...

没有xmlns属性我该怎么办?

如果您不关心命名空间,Nokogiri::XML::Document 提供了一个名为 remove_namespaces! 的方法。

doc = <<XML
<nfeProc>
  <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
    <infNFe Id="NFe123" versao="3.10">
      <ide>
        <name>25</name>
      </ide>
    </infNFe>
  </NFe>
</nfeProc>
XML

doc = Nokogiri::XML(doc)
doc.remove_namespaces!
doc.css('ide name').text
#=> "25"