首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Nokogiri获取通过子节点值搜索的XML节点的值?

如何使用Nokogiri获取通过子节点值搜索的XML节点的值?
EN

Stack Overflow用户
提问于 2018-06-14 15:05:41
回答 1查看 26关注 0票数 0

我需要使用Nokogiri Gem从下面的CodigoImovel == 6124-2中获取值。

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<Carga xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Imoveis>
        <Imovel>
            <CodigoImovel>6124-2</CodigoImovel>
            <TipoImovel>Apartamento</TipoImovel>
            <SubTipoImovel>Apartamento Padrão</SubTipoImovel>
        </Imovel>
        <Imovel>
            <CodigoImovel>86765</CodigoImovel>
            <TipoImovel>Apartamento</TipoImovel>
            <SubTipoImovel>Apartamento Padrão</SubTipoImovel>
            <CategoriaImovel>Cobertura</CategoriaImovel>
        </Imovel>
        <Imovel>
            <CodigoImovel>981768</CodigoImovel>
            <TipoImovel>Casa</TipoImovel>
            <SubTipoImovel>Casa de Condomínio</SubTipoImovel>
            <CategoriaImovel>Térrea</CategoriaImovel>
        </Imovel>
        <Imovel>
            <CodigoImovel>357468</CodigoImovel>
            <TipoImovel>Casa</TipoImovel>
            <SubTipoImovel>Casa de Condomínio</SubTipoImovel>
            <CategoriaImovel>Térrea</CategoriaImovel>
        </Imovel>
        <Imovel>
            <CodigoImovel>587168</CodigoImovel>
            <TipoImovel>Comercial/Industrial</TipoImovel>
            <SubTipoImovel>Conjunto</SubTipoImovel>
            <CategoriaImovel>Comercial/Sala Padrão</CategoriaImovel>
        </Imovel>
    </Imoveis>
</Carga>

我使用它来获取值xml.xpath("//Carga//Imoveis//ImovelCodigoImovel='"+re_code+"'"),但它显示未定义的局部变量或方法`re_code‘for #我感谢您的帮助。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 15:44:42

我执行了以下操作,并可以自动获得所需的节点:

代码语言:javascript
复制
 require 'nokogiri'
 xml = Nokogiri::XML::Document.parse '<Carga 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Imoveis>
      <Imovel>
          <CodigoImovel>6124-2</CodigoImovel>
          <TipoImovel>Apartamento</TipoImovel>
          <SubTipoImovel>Apartamento Padrão</SubTipoImovel>
      </Imovel>
      <Imovel>
          <CodigoImovel>86765</CodigoImovel>
          <TipoImovel>Apartamento</TipoImovel>
          <SubTipoImovel>Apartamento Padrão</SubTipoImovel>
          <CategoriaImovel>Cobertura</CategoriaImovel>
      </Imovel>
      <Imovel>
          <CodigoImovel>981768</CodigoImovel>
          <TipoImovel>Casa</TipoImovel>
          <SubTipoImovel>Casa de Condomínio</SubTipoImovel>
          <CategoriaImovel>Térrea</CategoriaImovel>
      </Imovel>
      <Imovel>
          <CodigoImovel>357468</CodigoImovel>
          <TipoImovel>Casa</TipoImovel>
          <SubTipoImovel>Casa de Condomínio</SubTipoImovel>
          <CategoriaImovel>Térrea</CategoriaImovel>
      </Imovel>
      <Imovel>
          <CodigoImovel>587168</CodigoImovel>
          <TipoImovel>Comercial/Industrial</TipoImovel>
          <SubTipoImovel>Conjunto</SubTipoImovel>
          <CategoriaImovel>Comercial/Sala Padrão</CategoriaImovel>
      </Imovel>
  </Imoveis>
</Carga>' 

注意解析后和结尾的单引号。然后我做了这个

代码语言:javascript
复制
re_code = '6124-2'
xml.xpath("//Carga//Imoveis//Imovel[CodigoImovel='"+re_code+"']")

并返回第一个带有子节点的<Imovel>节点。虽然我不确定为什么你称它为re_code,但你的意思是在这里使用正则表达式吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50851500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档