Ir para conteúdo

POWERED BY:

Arquivado

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

Gilberto Jr

Soma dos valores das tags do xml

Recommended Posts

Boa tarde.

 

Eu estou lendo um xml e eu tenho uma tag dentro do mesmo com o nome qTrib que mostra a quantidade de itens daquele produto na nota fiscal.

 

Eu queria fazer a soma e todas tag qTrib e mostrar o valor total.

 

Hoje eu uso o seguinte codigo

<%
function mask_data( obj )
		obj = CDAte( obj )
		dia = Day( obj  )
		mes = Month( obj )
		ano = Year( obj )
	
			if dia < 10 then
				dia = "0" & dia
			end if

			if mes < 10 then
				mes = "0" & mes
			end if
					
		 mask_data = dia &"/"& mes &"/"& ano
end function

set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.open "GET", "http://www.extranetmissbella.com.br/adm/xml/nfe.xml" & cat, false
xml.send

set objXML = xml.responseXML

set raiz = objXML.getElementsByTagName("NFe")
set nfe = objXML.getElementsByTagName("nNF")
set serie = objXML.getElementsByTagName("serie")
set itens = objXML.getElementsByTagName("qTrib")
set fornecedor = objXML.getElementsByTagName("xNome")
set dtEmissao = objXML.getElementsByTagName("dEmi")
set dtVencimento = objXML.getElementsByTagName("dVenc")
set valor = objXML.getElementsByTagName("vOrig")

for i = 0 to raiz.length-1

response.Write(nfe.item(i).text&"<br>")
response.Write(serie.item(i).text&"<br>")
response.Write(itens.item(i).text&"<br>")
response.Write(fornecedor.item(i).text&"<br>")
response.Write(mask_data(dtEmissao.item(i).text)&"<br>")
response.Write(mask_data(dtVencimento.item(i).text)&"<br>")
response.Write(formatCurrency(valor.item(i).text,2)&"<br>")

next

set xml = nothing
set objXML = nothing
%>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

recupere todos os valores do XML passe pro ASP e faça uma simples soma. Ou olha este exemplo que demonstra a expressão XPath

sum(/ / a). Ele retorna 6, que é a soma dos números em elementos <a>.

 

XML

<?xml version='1.0'?>
<?xml-stylesheet type="text/xsl" href="sum.xsl"?>
<root>
  <a>1</a>
  <a>3</a>
  <a>2</a>
</root>
XSLT File (sum.xsl)
<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
   <xsl:value-of select='sum(//a)'/>
</xsl:template>

</xsl:stylesheet>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xan, bom dia.

 

Eu consegui recuperar alias escrever todas as tag na pagina asp com o seguinte código

<%
for a = 0 to itens.length-1
response.Write(itens.item(a).text&"<br>")
next
%>

E também eu mostro a quantidade de vezes que essa tag aparece dentro do xml com o seguinte códgio

<%
response.Write(itens.length)
%>

Agora a minha duvida é como eu devo fazer a soma desses valores ou seja fazer a soma dessas 26 tag qTrib.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, eu consegui resolver aqui.

 

Eu usei o seguinte código, alias depois das modificaçoes ele ficou assim.

<%
function mask_data( obj )
		obj = CDAte( obj )
		dia = Day( obj  )
		mes = Month( obj )
		ano = Year( obj )
	
			if dia < 10 then
				dia = "0" & dia
			end if

			if mes < 10 then
				mes = "0" & mes
			end if
					
		 mask_data = dia &"/"& mes &"/"& ano
end function

set xml = Server.CreateObject("Microsoft.XMLHTTP")
xml.open "GET", "http://www.extranetmissbella.com.br/adm/xml/nfe.xml" & cat, false
xml.send

set objXML = xml.responseXML

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 dtEmissao = objXML.getElementsByTagName("dEmi")
set dtVencimento = objXML.getElementsByTagName("dVenc")
set valor = objXML.getElementsByTagName("vOrig")

for i = 0 to raiz.length-1
response.Write(nfe.item(i).text&"<br>")
response.Write(serie.item(i).text&"<br>")
response.Write(fornecedor.item(i).text&"<br>")
response.Write(mask_data(dtEmissao.item(i).text)&"<br>")
response.Write(mask_data(dtVencimento.item(i).text)&"<br>")
response.Write(formatCurrency(valor.item(i).text,2)&"<br>")
next

total = 0
for a = 0 to itens.length-1
total=itens.item(a).text + total
next

response.Write(total)
response.Write("<br>")
response.Write(itens.length)


set xml = nothing
set objXML = nothing
%>

Valeu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, ficou um simples soma...

mas o sum do XML você terá um ganho de desempenho.

Mas o importante que resolveu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu estava com duvida de como fazer esse sum alias eu nem sabia como fazer da o ponta pé de ínicio fiz dessa forma.

 

Se você achar viavel me passar algum link para eu estudar como que faz esse sum no XML eu dou uma estudada aqui.

 

 

Obrigado.

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.