Posté le 15 janvier 2016 - 21:29
|
Boa tarde Prezados,
Segue 3 vídeo aulas para estudo de arquivo xml para ler xml no Android e no iOS
http://www.screencast.com/t/sPyLGnKxfa
http://www.screencast.com/t/6C4OCWcW
http://www.screencast.com/t/V0APuTWU
os fontes estão no fórum oficial
Estou passando o exemplo para a PcSoft corrigir a função arraydeleteduplicate( ) que esqueceram de fazer para o Android que dei o nome de ArrayDeleteDuplicateBoller( ). E o Pega Nó do Xml que dei o nome de PegaNoXml( )
Bons estudos, espero ter esclarecido como se trabalha com xml nas duas plataformas.
Caso alguém tenha ficado com dúvida entre em contato
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Membre enregistré 1 517 messages Popularité : +89 (91 votes)
|
|
Posté le 15 janvier 2016 - 21:29
|
arrXml_Tags is array of strings
arrXml_TagResult is array of strings
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Membre enregistré 1 517 messages Popularité : +89 (91 votes)
|
|
Posté le 15 janvier 2016 - 21:30
|
Procedure LocalizarTagsEmXml(XML_Retorno is string)
nXposicaoinicial is int = 0 nXposicaofinal is int = 0 arrXml_Tag is array of strings
X is int = 0
IF IniOSMode() = True THEN
NoXml is string i is int = 1 NoXml = XMLExtractString(XML_Retorno,"NoXml",i)
Add(arrXml_Tag,"login_id") Add(arrXml_Tag,"login_email") Add(arrXml_Tag,"login_nome") Add(arrXml_Tag,"login_senha") Add(arrXml_Tag,"login_status") Add(arrXml_Tag,"login_admin")
FOR EACH stag OF arrXml_Tag
temp is string = XMLExtractString(NoXml,stag) Add(arrXml_TagResult, temp )
END
ELSE IF InAndroidMode() = True
XmlDoc is XMLDocument XmlDoc = XMLOpen(XML_Retorno, fromString) NoXml is xmlNode
FOR EACH NoXml OF XmlDoc.Xml.Retorno on NoXml
Add(arrXml_TagResult, NoXml.login_id) Add(arrXml_TagResult, NoXml.login_email) Add(arrXml_TagResult, NoXml.login_nome) Add(arrXml_TagResult, NoXml.login_senha) Add(arrXml_TagResult, NoXml.login_status) Add(arrXml_TagResult, NoXml.login_admin)
END
END
RESULT arrXml_TagResult
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Membre enregistré 1 517 messages Popularité : +89 (91 votes)
|
|
Posté le 15 janvier 2016 - 21:32
|
Procedure LocalizarTagsEmXml(XML_Retorno is string)
nXposicaoinicial is int = 0 nXposicaofinal is int = 0 arrXml_Tag is array of strings
X is int = 0
IF IniOSMode() = True THEN
NoXml is string i is int = 1 NoXml = XMLExtractString(XML_Retorno,"NoXml",i)
Add(arrXml_Tag,"login_id") Add(arrXml_Tag,"login_email") Add(arrXml_Tag,"login_nome") Add(arrXml_Tag,"login_senha") Add(arrXml_Tag,"login_status") Add(arrXml_Tag,"login_admin")
XmlDoc is XMLDocument
XmlDoc = XMLOpen(XML_Retorno, fromString)
total is int = XMLExtractString(XML_Retorno,"Total")
LOOP (total)
FOR EACH stag OF arrXml_Tag on stag
temp is string = XMLExtractString(NoXml,stag) Add(arrXml_TagResult, temp )
END
END
ELSE IF InAndroidMode() = True
XmlDoc is XMLDocument XmlDoc = XMLOpen(XML_Retorno, fromString) NoXml is xmlNode
FOR EACH NoXml OF XmlDoc.Xml.Retorno on NoXml
Add(arrXml_TagResult, NoXml.login_id) Add(arrXml_TagResult, NoXml.login_email) Add(arrXml_TagResult, NoXml.login_nome) Add(arrXml_TagResult, NoXml.login_senha) Add(arrXml_TagResult, NoXml.login_status) Add(arrXml_TagResult, NoXml.login_admin)
END
END
RESULT arrXml_TagResult
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Membre enregistré 1 517 messages Popularité : +89 (91 votes)
|
|
Posté le 15 janvier 2016 - 21:34
|
Procedure ArrayDeleteDuplicateBoller(ArrayResultado is array of strings)
x, NaoAchou is int = 0
ArrayResultadoNovo is array of strings
nTotal is int = ArrayCount(ArrayResultado)
LOOP (nTotal)
x += 1
NaoAchou = ArraySeek(ArrayResultadoNovo,asLinearFirst,ArrayResultado[x])
IF NaoAchou = -1
Add(ArrayResultadoNovo,ArrayResultado[x])
END
END
RESULT (ArrayResultadoNovo)
outra procedure
Procedure IdentificarTagsNoXml(XmlConteudo)
x, Inicial, Final, Tamanho is int = 0
Tag, Anterior is string = ""
IF XmlConteudo <> "" THEN
XmlConteudo = NoAccent(XmlConteudo) XmlConteudo = Replace(XmlConteudo,CR,"") XmlConteudo = Replace(XmlConteudo,Charact(13),"") XmlConteudo = Replace(XmlConteudo,Charact(10),"")
Total is int = Length(XmlConteudo)
LOOP (Total)
x += 1
IF XmlConteudo[[x]] = "<" Inicial = x+1 ELSE IF XmlConteudo[[x]] = ">" Final = x IF Final <= Inicial THEN Final = 0 END END
IF Inicial > 0 AND Final > 0 AND Final > Inicial
Tamanho = Final - Inicial
Tag = Middle(XmlConteudo,Inicial,Tamanho)
IF Middle(Tag,1,1) = "/" ORPositionOccurrence(Upper(Tag),"ID=",firstRank,FromBeginning) > 0 Tag = "" END
IF Tag <> "" AND Tamanho > 0 AND Anterior <> Tag AND Upper(Tag) <> "XML" ANDUpper(Tag) <> "RETORNO" AND Upper(Tag) <> "TOTAL"
Anterior = Tag
Add(arrXml_Tags,Tag)
END
END
END
END
ArrayDeleteDuplicate(arrXml_Tags,tccIgnoreSpace)
outra procedure
Procedure LocalizarTagsEmXml(XML_Retorno is string)
nXposicaoinicial is int = 0 nXposicaofinal is int = 0
X is int = 0
IF IniOSMode() = True THEN
NoXml is string i is int = 1 NoXml = XMLExtractString(XML_Retorno,"NoXml",i)
IdentificarTagsNoXml(XML_Retorno)
FOR EACH stag OF arrXml_Tags
temp is string = XMLExtractString(NoXml,stag)
Add(arrXml_TagResult, temp )
END
ELSE IF InAndroidMode() = True
T is int = 0
IdentificarTagsNoXml(XML_Retorno)
nQtde_tags is int = ArrayCount(arrXml_Tags) TagRegistro is string TagValor is string
LOOP (nQtde_tags)
T += 1
TagRegistro = arrXml_Tags[T]
TagValor = XMLExtractString(XML_Retorno,TagRegistro)
IF TagValor <> ""
Add(arrXml_TagResult,TagValor)
END
END
END
RESULT arrXml_TagResult
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Membre enregistré 47 messages Popularité : +5 (5 votes)
|
|
Posté le 15 janvier 2016 - 21:36
|
Muito Bom Adriano Show De bola
-- Atte. Willian Fernando
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Membre enregistré 1 517 messages Popularité : +89 (91 votes)
|
|
Posté le 15 janvier 2016 - 21:37
|
Procedure ArrayDeleteDuplicateBoller(ArrayResultado is array of strings)
x, NaoAchou is int = 0
ArrayResultadoNovo is array of strings
nTotal is int = ArrayCount(ArrayResultado)
LOOP (nTotal)
x += 1
NaoAchou = ArraySeek(ArrayResultadoNovo,asLinearFirst,ArrayResultado[x])
IF NaoAchou = -1
Add(ArrayResultadoNovo,ArrayResultado[x])
END
END
RESULT (ArrayResultadoNovo)
outra procedure
Procedure IdentificarTagsNoXml(XmlConteudo)
x, Inicial, Final, Tamanho is int = 0
Tag, Anterior is string = ""
IF XmlConteudo <> "" THEN
XmlConteudo = NoAccent(XmlConteudo) XmlConteudo = Replace(XmlConteudo,CR,"") XmlConteudo = Replace(XmlConteudo,Charact(13),"") XmlConteudo = Replace(XmlConteudo,Charact(10),"")
Total is int = Length(XmlConteudo)
LOOP (Total)
x += 1
IF XmlConteudo[[x]] = "<" Inicial = x+1 ELSE IF XmlConteudo[[x]] = ">" Final = x IF Final <= Inicial THEN Final = 0 END END
IF Inicial > 0 AND Final > 0 AND Final > Inicial
Tamanho = Final - Inicial
Tag = Middle(XmlConteudo,Inicial,Tamanho)
IF Middle(Tag,1,1) = "/" ORPositionOccurrence(Upper(Tag),"ID=",firstRank,FromBeginning) > 0 Tag = "" END
IF Tag <> "" AND Tamanho > 0 AND Anterior <> Tag AND Upper(Tag) <> "XML" ANDUpper(Tag) <> "RETORNO" AND Upper(Tag) <> "TOTAL"
Anterior = Tag
Add(arrXml_Tags,Tag)
END
END
END
END
ArrayDeleteDuplicate(arrXml_Tags,tccIgnoreSpace)
Outra Procedure
Procedure LocalizarTagsEmXml(XML_Retorno is string)
nXposicaoinicial is int = 0 nXposicaofinal is int = 0
X is int = 0
IF IniOSMode() = True THEN
T, N is int = 0
RegistroXml is string
NoXml is string
i is int = 1
NoXml = XMLExtractString(XML_Retorno,"NoXml",i)
IdentificarTagsNoXml(XML_Retorno)
nQtde_Registros is int = XMLExtractString(EDT_XML,"Total")
LOOP (nQtde_Registros)
T = 0
N += 1
RegistroXml = PegaNoXml(XML_Retorno,N)
NoXml = XMLExtractString(RegistroXml,"NoXml",i)
FOR EACH stag OF arrXml_Tags
temp is string = XMLExtractString(NoXml,stag)
Add(arrXml_TagResult, temp )
END
END
ELSE IF InAndroidMode() = True
T, N is int = 0
IdentificarTagsNoXml(XML_Retorno)
nQtde_tags is int = ArrayCount(arrXml_Tags)
TagRegistro, RegistroXml is string
TagValor is string
nQtde_Registros is int = XMLExtractString(EDT_XML,"Total")
LOOP (nQtde_Registros)
T = 0
N += 1
RegistroXml = PegaNoXml(XML_Retorno,N)
LOOP (nQtde_tags)
T += 1
TagRegistro = arrXml_Tags[T]
TagValor = XMLExtractString(RegistroXml,TagRegistro)
IF TagValor <> ""
Add(arrXml_TagResult,TagValor)
END
END
END
END
RESULT arrXml_TagResult
Outra Procedure
Procedure PegaNoXml(RetornoXml, NoXmlId)
Inicio, Final, Tamanho is int = 0
NoXml is string = "<Xml><Retorno>"
IF RetornoXml <> "" AND NoXmlId > 0 THEN
Inicio = PositionOccurrence(RetornoXml,"<NoXml ID="+Charact(34)+NoXmlId+Charact(34)+">",firstRank,FromBeginning)
IF NoXmlId = 1 Final = PositionOccurrence(RetornoXml,"</NoXml>",firstRank,FromBeginning) ELSE Final = PositionOccurrence(RetornoXml,"</NoXml>",nextRank,FromBeginning) END
Tamanho = Final - Inicio
NoXml += Middle(RetornoXml,Inicio,Tamanho)
END
NoXml += "</NoXml></Retorno></Xml>"
NoXml = Replace(NoXml,CR,"") NoXml = Replace(NoXml,Charact(13),"") NoXml = Replace(NoXml,Charact(10),"")
RESULT NoXml
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Membre enregistré 1 517 messages Popularité : +89 (91 votes)
|
|
Posté le 15 janvier 2016 - 21:40
|
Lembrando que eu coloquei em modo ANSI o projeto inteiro
Se não aparece tudo em japonês, rssss.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Membre enregistré 1 517 messages Popularité : +89 (91 votes)
|
|
Posté le 15 janvier 2016 - 21:47
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Membre enregistré 1 517 messages Popularité : +89 (91 votes)
|
|
Posté le 15 janvier 2016 - 22:04
|
Prezados,
Segue aqui o fonte para estudos
https://mega.nz/…
Bons estudos
Tendo sugestões, sobre o assunto, favor postem material, por mais simples que pareça, mas caso não tenha no help é interessante para quem esta iniciando os estudos da plataforma PcSoft.
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.blogspot.com.br/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|