如何只选择使用Nokogiri的空间节点?

时间:2017-01-15 02:20:56

标签: ruby xpath nokogiri

我有以下XML文档:

<w:p w14:paraId="572705D7" w14:textId="77777777" w:rsidP="00CA0169" w:rsidR="00CA0169" w:rsidRDefault="00CA0169" w:rsidRPr="00777A35">
    <w:r>
        <w:t xml:space="preserve"/>
    </w:r>
    <w:r>
        <w:t>synthesized in cyanobacteria under unsuitable condition</w:t>
    </w:r>
</w:p>

我目前选择以下开头的所有节点:

text_nodes = p.xpath('w:r')

但是,我想只选择那些包含文本的文本节点,而不仅仅是空格,因为第一个节点如上面的xml示例所示。

我已经扩展了String Class以测试空格,如下所示:

class String
  def spaces?
    x = self =~ /^\s+$/
    x == 0
  end
end

所以我能做到:

element.text.spaces?

我只是不知道如何将它与p.xpath('w:r')放在一起,只选择不仅是空格的节点。

1 个答案:

答案 0 :(得分:1)

app.put('/items/:id', function(req, res) {
  var data = req.body; // data should be validated
  Item.findOneAndUpdate({ _id: req.params.id }
    , { $set: data }
    , { returnOriginal: false }
    , function (err, result) {
      if (err) {
        return res.status(500).json({
          message: 'Internal Server Error.'
        });
      }
      return res.json(result);
    }
  );
});

正如您的XPath表达式所做的那样。