我需要使用Nokogiri Gem从以下XML中删除Imovel Node
CodigoImovel == 6124-2
。
<?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
代码位于xml_str
变量中,我用此解析:
xml = Nokogiri::XML(xml_str)
此代码使用Nokogiri正确创建XML结构,但我不知道如何通过元素值查找以及如何删除它。
以前我在Imovel
元素中有一个ID属性,如:
<Imovel id="6124-2">......</Imovel>
我正在使用此删除:
xml.css('#'+imovel_id).remove
它工作正常。但是,接收此XML的系统不允许在Imovel
节点中使用额外的属性。
我感谢任何帮助。谢谢!
答案 0 :(得分:1)
我用这段代码解决了这个问题:
xml.xpath("//Carga//Imoveis//Imovel[CodigoImovel='"+re_code+"']").remove
XPATH允许按值搜索特定节点。此查询返回特定节点。然后工作是删除节点。
this question中接受的答案帮助我解决了问题。