1
So people... all right? I have a little problem here very similar to the one I had yesterday, I have a VBS script that suits me well, it basically reads the XML, takes the date inside the XML and renames the file with this date...
Now I need it to rename XML with CNPJ followed by date, but the problem is that the CNPJ tag is not unique, there are several Cnpjs in xml... I just need the CNPJ inside the tag, I was able to make it work really well here, but there’s some XML that I get that order changes, so how does it get the first CNPJ tag that it has, sometimes it gets the CNPJ from another tag other than the . Could you help me? Follow below the codes:
Excerpt from the XML:
<?xml version = "1.0" encoding = "ISO-8859-1"?>
<cteProc versao="3.00" xmlns="http://www.portalfiscal.inf.br/cte">
<CTe xmlns="http://www.portalfiscal.inf.br/cte">
<infCte versao="3.00" Id="CTe33180702012862001050570060001000081465016982">
<ide>
<cUF>33</cUF>
<cCT>sad1698</cCT>
<CFOP>6asd351</CFOP>
<natOp>PREST. SERV DE TRANSP. PARA EXECUÇÃO SERV. DA MESMA NATUREZA</natOp>
<mod>57</mod>
<serie>6</serie>
<nCT>10s0008</nCT>
<dhEmi>2018-07-17T15:37:34-03:00</dhEmi>
<tpImp>1</tpImp>
<tpEmis>1</tpEmis>
<cDV>2</cDV>
<tpAmb>1</tpAmb>
<tpCTe>0</tpCTe>
<procEmi>0</procEmi>
<verProc>Triangulus_2.0.28.48</verProc>
<cMunEnv>3304557</cMunEnv>
<xMunEnv>RIO DE JANEIRO</xMunEnv>
<UFEnv>RJ</UFEnv>
<modal>02</modal>
<tpServ>0</tpServ>
<cMunIni>3304557</cMunIni>
<xMunIni>RIO DE JANEIRO</xMunIni>
<UFIni>RJ</UFIni>
<cMunFim>3518800</cMunFim>
<xMunFim>GUARULHOS</xMunFim>
<UFFim>SP</UFFim>
<retira>0</retira>
<xDetRetira>AEROPORTO</xDetRetira>
<indIEToma>1</indIEToma>
<toma3>
<toma>3</toma>
</toma3>
</ide>
<compl>
<xCaracSer>PRÓXIMO DIA</xCaracSer>
<xEmi>Tauany Peçanha Ayre</xEmi>
<fluxo>
<xOrig>SDU</xOrig>
<xDest>GRU</xDest>
</fluxo>
<destCalc>3518800</destCalc>
<xObs>ICMS CONFORME RESOLU??O DO SENADO FEDERAL 95/96</xObs>
<ObsCont xCampo="TIPO DE PAGAMENTO">
<xTexto>CONTA CORRENTE - 638877SAO - 19.89</xTexto>
</ObsCont>
<ObsCont xCampo="CONTA CORRENTE">
<xTexto>638877SAO</xTexto>
</ObsCont>
<ObsCont xCampo="FINANCIERO">
<xTexto>Lei da transparência 12.741/12, o percentual aproximado dos tributos incidentes sobre o preço do serviço são: Federal: 15,96% Estadual: 4,0%</xTexto>
</ObsCont>
</compl>
<emit>
<CNPJ>02012862001050</CNPJ> <---- PRECISO QUE SEJA ESSE CNPJ EM ESPECIFICO
<IE>84328820</IE>
<xNome>TAM LINHAS AEREAS SA SDU</xNome>
<enderEmit>
<xLgr>PC SENADOR SALGADO FILHO</xLgr>
<nro>0</nro>
<xCpl>AEROPORTO SANTOS DUMONT</xCpl>
<xBairro>AEROPORTO SANTOS DUMONT</xBairro>
<cMun>3304557</cMun>
<xMun>RIO DE JANEIRO</xMun>
<CEP>20021340</CEP>
VBS file:
DiretorioobjFiles = "C:\DACTE\"
DiretorioDestino = "C:\DACTE\DATA\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = FSO.GetFolder(DiretorioobjFiles)
Wscript.Echo objFolder.Path
Set colFiles = objFolder.Files
For Each objFile in colFiles
On Error Resume Next
If Right(objFile.FileName, 4) = ".xml" Then
Set objParser = CreateObject("Microsoft.XMLDOM")
objParser.Load (objFile.path)
oldFileName = objFile.path
Set ElemList = objParser.getElementsByTagName("emit").getElementsByTagName("CNPJ")
CNPJ = ElemList.Item(0).Text
Set ElemList = objParser.getElementsByTagName("dhEmi")
dhEmi = Replace(ElemList.Item(0).Text, ":", "_")
newFileName = DiretorioDestino + CNPJ + "_" + dhEmi + ".xml"
fso.MoveFile oldFileName, newFileName
End If
Next
Mario, I don’t know about VBS but I decided to give a "search" around. What if you used the command:
Set ElemList = objParser.getElementsByTagName("emit")
to get to the "Emit" tag and use the commandCNPJ = ElemList.FirstChild.Text
- the idea is to catch the first child after the tag "Emit". Maybe I can help...– Rodrigo Tognin
I did several tests here with firstchild and it either didn’t work or ended up just converting the first item of my xml... :(
– Mario Uryu
But thanks for the tip!!!
– Mario Uryu