Prezados,
Segue abaixo exemplo de como ler um Xml com TAGS repetidas
Procedure BuscaTag(XmlTexto, TagBuscada)
nPosini is int = PositionOccurrence(XmlTexto,TagBuscada,firstRank,FromBeginning)
RESULT(nPosini)
Procedure BuscaValorTag(XmlTexto,Tag)
valor is string
nPosini is int = PositionOccurrence(XmlTexto,Tag,firstRank,FromBeginning)-1
nPosfim is int = PositionOccurrence(XmlTexto,"</"+Middle(Tag,2,Length(Tag)),firstRank,FromBeginning)
IF nPosini > 0 THEN
tamanhotxt is int = Length("<CodigoImovel>")
nPosini = nPosini+tamanhotxt
valor = Middle(XmlTexto,nPosini,nPosfim-nPosini)
END
RESULT(valor)
Procedure ContaTags(XmlTexto, TagBuscada)
nQtdeTagsBuscadas is int = 0
nTotalcaracteresXml is int = Length(XmlTexto)
nTotalcaracteresTagBuscada is int = Length(TagBuscada)
TextoBuscado is string = ""
posicao_atual is int = 0
LOOP (nTotalcaracteresXml)
posicao_atual+=1
TextoBuscado = Middle(XmlTexto,posicao_atual,nTotalcaracteresTagBuscada)
IF TextoBuscado = TagBuscada THEN
nQtdeTagsBuscadas++
END
END
RESULT(nQtdeTagsBuscadas)
Procedure LeXml(XmlTexto,TagOriginal)
i is int = 1
recortexml, Tagbuscada, imovel is string
Tagbuscada = TagOriginal
arrfoto is array of 1 by 2 strings
ntotal is int = ContaTags(XmlTexto,TagOriginal)
LOOP(ntotal)
IF XmlTexto <> "" THEN
nPosini is int = PositionOccurrence(XmlTexto,Tagbuscada,firstRank,FromBeginning)
Tagbuscada = "</"+ Middle(Tagbuscada,2,Length(Tagbuscada))
tamanhoTagFinalFoto is int = Length(Tagbuscada)
nposfim is int = PositionOccurrence(XmlTexto,Tagbuscada,firstRank,FromBeginning)
IF nPosini > 0 AND nposfim > 0 THEN
imovel = BuscaValorTag(XmlTexto,"<NomeArquivo>")
recortexml = Middle(XmlTexto,nPosini,nposfim-nPosini)
arrfoto[i,1] = imovel
arrfoto[i,2] = recortexml
i++
Dimension(arrfoto, i, 2)
XmlTexto = Middle(XmlTexto,nposfim+tamanhoTagFinalFoto,Length(XmlTexto))
nPosini = 0
nposfim = 0
Tagbuscada = TagOriginal
END
END
END
Info(arrfoto[1,1],arrfoto[1,2])
<?xml version="1.0" encoding="iso-8859-1"?>
<Carga xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Imoveis>
<Imovel>
<CodigoImovel>15</CodigoImovel>
<TipoImovel>Residencial</TipoImovel>
<SubTipoImovel>apto</SubTipoImovel>
<CategoriaImovel>Padrao</CategoriaImovel>
<Cidade>xxxxxxxx</Cidade>
<Bairro>xxx</Bairro>
<Numero>338</Numero>
<Complemento>apto</Complemento>
<CEP>00000-000</CEP>
<PrecoVenda>1000000</PrecoVenda><AreaUtil>0</AreaUtil><AreaTotal>0</AreaTotal><QtdDormitorios>2</QtdDormitorios><QtdBanheiros>1</QtdBanheiros><QtdVagas>1</QtdVagas>
<Observacao>APARTAMENTO xxxxx.</Observacao>
<VisualizarMapa>0</VisualizarMapa>
<TipoOferta>1</TipoOferta>
<Fotos>
<Foto>
<NomeArquivo>15_imovel_1.jpg</NomeArquivo>
<URLArquivo>15_1.jpg</URLArquivo>
<Principal>1</Principal><Alterada>0</Alterada>
</Foto>
<Foto>
<NomeArquivo>15_imovel_2.jpg</NomeArquivo>
<URLArquivo>15_imovel_2.jpg</URLArquivo>
<Alterada>1</Alterada>
</Foto>
</Fotos>
<!-- <Feature></Feature> -->
</Imovel>
<Imovel>
<CodigoImovel>17</CodigoImovel>
<TipoImovel>Residencial</TipoImovel>
<SubTipoImovel>zzzzz</SubTipoImovel>
<CategoriaImovel>Padrao</CategoriaImovel>
<Cidade>yyyyyy</Cidade>
<Bairro>ppppp</Bairro>
<Numero>335</Numero>
<Complemento>xxxxxxx</Complemento>
<CEP>000000-000</CEP>
<PrecoLocacao>800</PrecoLocacao><AreaUtil>0</AreaUtil><AreaTotal>0</AreaTotal><QtdDormitorios>2</QtdDormitorios><QtdSuites>1</QtdSuites><QtdBanheiros>1</QtdBanheiros><QtdVagas>1</QtdVagas>
<Observacao>APARTAMENTO xxxxxxxxxxxxxxxxxxxxxxxxx.</Observacao>
<VisualizarMapa>0</VisualizarMapa>
<TipoOferta>1</TipoOferta>
<Fotos>
<Foto>
<NomeArquivo>17_1.jpg</NomeArquivo>
<URLArquivo>17_1.jpg</URLArquivo>
<Principal>1</Principal><Alterada>0</Alterada>
</Foto>
<Foto>
<NomeArquivo>17_2.jpg</NomeArquivo>
<URLArquivo>17_2.jpg</URLArquivo>
<Alterada>1</Alterada>
</Foto>
</Fotos>
</Imovel>
</Imoveis>
</Carga>
--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/