PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → WX - Lendo um Xml com TAGS repetidas
WX - Lendo um Xml com TAGS repetidas
Débuté par BOLLER, 16 jan. 2018 02:23 - 1 réponse
Membre enregistré
3 654 messages
Popularité : +175 (223 votes)
Posté le 16 janvier 2018 - 02:23
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

//busca imovel
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) //<Foto>

Tagbuscada = "</"+ Middle(Tagbuscada,2,Length(Tagbuscada)) //</Foto>

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)

//add(arrfoto,recortexml)

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/
Membre enregistré
3 654 messages
Popularité : +175 (223 votes)
Posté le 16 janvier 2018 - 02:24


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/