Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mateus Santos Barros

Lendo XML

Recommended Posts

Tenho o seguinte XML:

<?xml version="1.0" encoding="utf-16"?>
<ClearSale>
<Orders>
<Order>
<ID>0000</ID>
<Status>APA</Status>
<Score>00.000</Score>
</Order>
</Orders>
</ClearSale>
</string>
Não consigo fazer a leitura desse XML, já tentei de várias formas, alguém consegue me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

V quer ler todo ou pegar um nó especifico ?

<%
'Instancia o objeto XMLDOM.
Set objXMLDoc = CreateObject("MSXML2.DOMDocument.4.0")
 
'Indicamos que o download em segundo plano não é permitido
objXMLDoc.async = False
 
'Carrega o domcumento XML
objXMLDoc.load("TESTE.xml")
 
'O método parseError contém informações sobre o último erro ocorrido
if objXMLDoc.parseError <> 0 then
 
response.write "Código do erro: " & objXMLDoc.parseError.errorCode & "<br>"
response.write "Posição no arquivo: " & objXMLDoc.parseError.filepos & "<br>"
response.write "Linha: " & objXMLDoc.parseError.line & "<br>"
response.write "Posição na linha: " & objXMLDoc.parseError.linepos & "<br>"
response.write "Descrição: " & objXMLDoc.parseError.reason & "<br>"
response.write "Texto que causa o erro: " & objXMLDoc.parseError.srcText & "<br>"
response.write "Url do arquivo com problemas: " & objXMLDoc.parseError.url
 
else
 
'A propriedade documentElement refere-se à raiz do documento
Set raiz = objXMLDoc.documentElement
 
'Looping para percorrer todos os elementos filhos
For i = 0 to raiz.childNodes.length -1
 
'A propriedade NodeName contém o nome do elemento
'A propriedade childNodes contém a lista de
'elementos filhos
Response.write raiz.NodeName & "<br>" & raiz.childNodes.item(i).childNodes.item(0).text & "<br>" &  raiz.childNodes.item(i).childNodes.item(1).text
 
Next
 
end if
 
'Destruindo os objetos
Set objXMLDoc = Nothing
Set raiz = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde;

 

Eu uso dessa forma para ler XML de nota fiscal eletronica

set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.open "GET", "http://www.tecnogalli.com.br/consultoria/arquivos/"&pathrede&"/"&pathloja&"/"&xmlnf & cat, false
xml.send
 
set objXML = xml.respon---ML
 
set raiz = objXML.getElementsByTagName("nfeProc")
set nfe = objXML.getElementsByTagName("nNF")
set serie = objXML.getElementsByTagName("serie")
set itens = objXML.getElementsByTagName("qTrib")
set fornecedor = objXML.getElementsByTagName("xNome")
set rua = objXML.getElementsByTagName("enderEmit/xLgr")
set num = objXML.getElementsByTagName("enderEmit/nro")
set bairro = objXML.getElementsByTagName("enderEmit/xBairro")
set cepemi = objXML.getElementsByTagName("enderEmit/CEP")
set cidadeem = objXML.getElementsByTagName("enderEmit/xMun")
set estadoemi = objXML.getElementsByTagName("enderEmit/UF")
set telemi = objXML.getElementsByTagName("enderEmit/fone")
set dtEmissao = objXML.getElementsByTagName("dEmi")
set valor = objXML.getElementsByTagName("vNF")
set cnpj = objXML.getElementsByTagName("dest/CNPJ")
set cnpjemitente = objXML.getElementsByTagName("emit/CNPJ")
set inscMun = objXML.getElementsByTagName("IE")
set valoricms = objXML.getElementsByTagName("ICMSTot/vICMS")
set numserie = objXML.getElementsByTagName("chNFe")
set chave = objXML.getElementsByTagName("chNFe")
set natureza = objXML.getElementsByTagName("natOp")
set protocolo = objXML.getElementsByTagName("nProt")
set tipoemissao = objXML.getElementsByTagName("tpEmis")
set nomedest = objXML.getElementsByTagName("dest/xNome")
set enderdes = objXML.getElementsByTagName("enderDest/xLgr")
set numdest = objXML.getElementsByTagName("enderDest/nro")
set complemtentodest = objXML.getElementsByTagName("enderDest/xCpl")
set bairrodest = objXML.getElementsByTagName("enderDest/xBairro")
set cepdest = objXML.getElementsByTagName("enderDest/CEP")
set datasaida = objXML.getElementsByTagName("dSaiEnt")
set munudest = objXML.getElementsByTagName("enderDest/xMun")
set ufdest = objXML.getElementsByTagName("enderDest/UF")
set teldesti = objXML.getElementsByTagName("enderDest/fone")
set inscestdest = objXML.getElementsByTagName("dest/IE")
set datavencimento = objXML.getElementsByTagName("dVenc")
set nDuplicata = objXML.getElementsByTagName("nDup")
set basecalcicmsst = objXML.getElementsByTagName("vBCST")
set valoricmssubs = objXML.getElementsByTagName("vST")
set valortotalprod = objXML.getElementsByTagName("vProd")
set nometrans = objXML.getElementsByTagName("transporta/xNome")
set dadosnf = objXML.getElementsByTagName("infCpl")
set datahora = objXML.getElementsByTagName("dhRecbto")


for i = 0 to raiz.length-1
datahora = datahora.item(i).text
dadosnf = dadosnf.item(i).text
nometrans = nometrans.item(i).text
valortotalprod = valortotalprod.item(i).text
valoricmssubs = valoricmssubs.item(i).text
basecalcicmsst = basecalcicmsst.item(i).text
nDuplicata = nDuplicata.item(i).text
datavencimento = datavencimento.item(i).text
inscestdest = inscestdest.item(i).text
teldesti = teldesti.item(i).text
ufdest = ufdest.item(i).text
munudest = munudest.item(i).text
datasaida = datasaida.item(i).text
cepdest = cepdest.item(i).text
bairrodest = bairrodest.item(i).text
complemtentodest = complemtentodest.item(i).text
numdest = numdest.item(i).text
enderdes = enderdes.item(i).text
nomedest = nomedest.item(i).text
tipoemissao = tipoemissao.item(i).text
notafiscal = nfe.item(i).text
serienf = serie.item(i).text
chaveacesso = chave.item(i).text
naturezaop = natureza.item(i).text
protocolouso = protocolo.item(i).text
cnpj = cnpj.item(i).text
cnpjemitente = cnpjemitente.item(i).text
inscMun = inscMun.item(i).text
dataemissao = mask_data(dtEmissao.item(i).text)
valor = valor.item(i).text
valoricms = valoricms.item(i).text
numserie = numserie.item(i).text
fornecedor = fornecedor.item(i).text
rua = rua.item(i).text
num = num.item(i).text
bairro = bairro.item(i).text
cepemi = cepemi.item(i).text
cidadeem = cidadeem.item(i).text
estadoemi = estadoemi.item(i).text
telemi = telemi.item(i).text
dtEmissao = dtEmissao.item(i).text
next

set xml = nothing
set objXML = nothing

Basta você fazer a adaptação e usar no seu projeto.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu quero pegar as tags Status e Score, não consigo pegar os elementos filhos.


Boa tarde;

 

Eu uso dessa forma para ler XML de nota fiscal eletronica

set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.open "GET", "http://www.tecnogalli.com.br/consultoria/arquivos/"&pathrede&"/"&pathloja&"/"&xmlnf & cat, false
xml.send
 
set objXML = xml.respon---ML
 
set raiz = objXML.getElementsByTagName("nfeProc")
set nfe = objXML.getElementsByTagName("nNF")
set serie = objXML.getElementsByTagName("serie")
set itens = objXML.getElementsByTagName("qTrib")
set fornecedor = objXML.getElementsByTagName("xNome")
set rua = objXML.getElementsByTagName("enderEmit/xLgr")
set num = objXML.getElementsByTagName("enderEmit/nro")
set bairro = objXML.getElementsByTagName("enderEmit/xBairro")
set cepemi = objXML.getElementsByTagName("enderEmit/CEP")
set cidadeem = objXML.getElementsByTagName("enderEmit/xMun")
set estadoemi = objXML.getElementsByTagName("enderEmit/UF")
set telemi = objXML.getElementsByTagName("enderEmit/fone")
set dtEmissao = objXML.getElementsByTagName("dEmi")
set valor = objXML.getElementsByTagName("vNF")
set cnpj = objXML.getElementsByTagName("dest/CNPJ")
set cnpjemitente = objXML.getElementsByTagName("emit/CNPJ")
set inscMun = objXML.getElementsByTagName("IE")
set valoricms = objXML.getElementsByTagName("ICMSTot/vICMS")
set numserie = objXML.getElementsByTagName("chNFe")
set chave = objXML.getElementsByTagName("chNFe")
set natureza = objXML.getElementsByTagName("natOp")
set protocolo = objXML.getElementsByTagName("nProt")
set tipoemissao = objXML.getElementsByTagName("tpEmis")
set nomedest = objXML.getElementsByTagName("dest/xNome")
set enderdes = objXML.getElementsByTagName("enderDest/xLgr")
set numdest = objXML.getElementsByTagName("enderDest/nro")
set complemtentodest = objXML.getElementsByTagName("enderDest/xCpl")
set bairrodest = objXML.getElementsByTagName("enderDest/xBairro")
set cepdest = objXML.getElementsByTagName("enderDest/CEP")
set datasaida = objXML.getElementsByTagName("dSaiEnt")
set munudest = objXML.getElementsByTagName("enderDest/xMun")
set ufdest = objXML.getElementsByTagName("enderDest/UF")
set teldesti = objXML.getElementsByTagName("enderDest/fone")
set inscestdest = objXML.getElementsByTagName("dest/IE")
set datavencimento = objXML.getElementsByTagName("dVenc")
set nDuplicata = objXML.getElementsByTagName("nDup")
set basecalcicmsst = objXML.getElementsByTagName("vBCST")
set valoricmssubs = objXML.getElementsByTagName("vST")
set valortotalprod = objXML.getElementsByTagName("vProd")
set nometrans = objXML.getElementsByTagName("transporta/xNome")
set dadosnf = objXML.getElementsByTagName("infCpl")
set datahora = objXML.getElementsByTagName("dhRecbto")


for i = 0 to raiz.length-1
datahora = datahora.item(i).text
dadosnf = dadosnf.item(i).text
nometrans = nometrans.item(i).text
valortotalprod = valortotalprod.item(i).text
valoricmssubs = valoricmssubs.item(i).text
basecalcicmsst = basecalcicmsst.item(i).text
nDuplicata = nDuplicata.item(i).text
datavencimento = datavencimento.item(i).text
inscestdest = inscestdest.item(i).text
teldesti = teldesti.item(i).text
ufdest = ufdest.item(i).text
munudest = munudest.item(i).text
datasaida = datasaida.item(i).text
cepdest = cepdest.item(i).text
bairrodest = bairrodest.item(i).text
complemtentodest = complemtentodest.item(i).text
numdest = numdest.item(i).text
enderdes = enderdes.item(i).text
nomedest = nomedest.item(i).text
tipoemissao = tipoemissao.item(i).text
notafiscal = nfe.item(i).text
serienf = serie.item(i).text
chaveacesso = chave.item(i).text
naturezaop = natureza.item(i).text
protocolouso = protocolo.item(i).text
cnpj = cnpj.item(i).text
cnpjemitente = cnpjemitente.item(i).text
inscMun = inscMun.item(i).text
dataemissao = mask_data(dtEmissao.item(i).text)
valor = valor.item(i).text
valoricms = valoricms.item(i).text
numserie = numserie.item(i).text
fornecedor = fornecedor.item(i).text
rua = rua.item(i).text
num = num.item(i).text
bairro = bairro.item(i).text
cepemi = cepemi.item(i).text
cidadeem = cidadeem.item(i).text
estadoemi = estadoemi.item(i).text
telemi = telemi.item(i).text
dtEmissao = dtEmissao.item(i).text
next

set xml = nothing
set objXML = nothing

Basta você fazer a adaptação e usar no seu projeto.

 

Att;

 

 

V quer ler todo ou pegar um nó especifico ?

<%
'Instancia o objeto XMLDOM.
Set objXMLDoc = CreateObject("MSXML2.DOMDocument.4.0")
 
'Indicamos que o download em segundo plano não é permitido
objXMLDoc.async = False
 
'Carrega o domcumento XML
objXMLDoc.load("TESTE.xml")
 
'O método parseError contém informações sobre o último erro ocorrido
if objXMLDoc.parseError <> 0 then
 
response.write "Código do erro: " & objXMLDoc.parseError.errorCode & "<br>"
response.write "Posição no arquivo: " & objXMLDoc.parseError.filepos & "<br>"
response.write "Linha: " & objXMLDoc.parseError.line & "<br>"
response.write "Posição na linha: " & objXMLDoc.parseError.linepos & "<br>"
response.write "Descrição: " & objXMLDoc.parseError.reason & "<br>"
response.write "Texto que causa o erro: " & objXMLDoc.parseError.srcText & "<br>"
response.write "Url do arquivo com problemas: " & objXMLDoc.parseError.url
 
else
 
'A propriedade documentElement refere-se à raiz do documento
Set raiz = objXMLDoc.documentElement
 
'Looping para percorrer todos os elementos filhos
For i = 0 to raiz.childNodes.length -1
 
'A propriedade NodeName contém o nome do elemento
'A propriedade childNodes contém a lista de
'elementos filhos
Response.write raiz.NodeName & "<br>" & raiz.childNodes.item(i).childNodes.item(0).text & "<br>" &  raiz.childNodes.item(i).childNodes.item(1).text
 
Next
 
end if
 
'Destruindo os objetos
Set objXMLDoc = Nothing
Set raiz = Nothing
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

No meu código para pegar o elemento pai eu uso assim

set bairrodest = objXML.getElementsByTagName("enderDest")

Para pegar o elemento filho uso assim

set bairrodest = objXML.getElementsByTagName("enderDest/xBairro")

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu uso assim para pegar um valor específico de um node

   ' ################################################################################################
        ' pegaValorNode
        ' Retorno o valor específico de um Node de um XML
        Function pegaValorNode(xml, node)
                Dim objXml
                Set objXml = Server.CreateObject("MSXML2.DOMDocument")

                objXml.loadXML(xml)

                If (TypeName(objXml) = "DOMDocument") Then
                        If (objXml.GetElementsByTagName(node).length <> 0) Then
                                pegaValorNode = objXml.selectSingleNode("//" & node).text
                        Else
                                pegaValorNode = ""
                        End If
                Else
                        pegaValorNode = ""
                End If

                Set objXml = Nothing
        End Function



Utilizando a função:

'objSrvHTTP.responseText: retorno utilizando MSXML2.XMLHTTP.3.0
    xml = objSrvHTTP.responseText
'erro//codigo: nó a ser recuperado
    retorno_codigo_erro = pegaValorNode(xml,"erro//codigo")

Compartilhar este post


Link para o post
Compartilhar em outros sites

to precisando disso porém para C#, aplicação desktop alguém tem idéia, já faz muito tempo que to quebrando cabeça aqui, sou novo com C#

estou tentando usar Xml.linq;

sei que não é a aréa mais correta, porém se alguém me der uma ajuda ficarei muito grato.

 

Atenciosamente Marcos...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.