Page 1 of 1
Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 12:00 pm
by goosfancito
Hola.
Quiero detectar si el archivo que me está intentando cargar un cliente es un XML, como puedo hacerlo (sin solamente ver si la extension es .xlm)?
gracias.
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 12:02 pm
by Antonio Linares
Puedes comprobar si tiene _ al comienzo "<xml"
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 12:22 pm
by goosfancito
intento hacer esta comprobación y nunca me lo detecta bien, o sea, nunca me muestra el cartel de ERROR
este es el contenido (modificado al propósito por mi)
<?xmlasd version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"
Code: Select all | Expand
hFile := FOpen( aFiles[ 1 ] )
oXmlDoc := TXmlDocument():New( hFile )
oXmlIter := TXmlIterator():New( oXmlDoc:oRoot )
oTagActual = oXmlIter:NEXT()
IF ( AllTrim( oTagActual:cName ) != 'xml' )
? "error"
...
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 12:31 pm
by Antonio Linares
Que te hace suponer que oTagActual:cName vale 'xml' ?
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 7:05 pm
by goosfancito
no entiendo la pregunta, pero cuando hice un fwdbg de ese tag me muestra que es un 'C' y que el valor es 'xml', a eso te referis?
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 7:09 pm
by goosfancito
goosfancito wrote:no entiendo la pregunta, pero cuando hice un fwdbg de ese tag me muestra que es un 'C' y que el valor es 'xml', a eso te referis?
https://i.postimg.cc/pVDKY20W/Captura.png
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 7:20 pm
by Armando
Goosfancito:
No te vale la extensión?
Saludos
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 9:29 pm
by acuellar
Goosfancito:
Intenta asi:
Code: Select all | Expand
oFile:= TTxtFile():New( "archivo.xml" )
cLinea:=oFile:ReadLine()
If (At('xml',cLinea)>0
?"Es xml"
Else
?"No es xml"
Endif
oFile:End()
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 9:30 pm
by leandro
Creo que esto te puede servir, es un aporte de nuestro colega Carlos Gallego
https://forums.fivetechsupport.com/view ... 9f#p254367
Code: Select all | Expand
#include "FiveWin.ch"
function Main()
Local oNode
Local cRuta := "xml2.xml"
Local cPath := "xml"
oNode := SearchPathXml( cRuta , cPath )
if valtype(oNode)!="U"
msginfo("xml correcto")
else
msginfo("xml no valido")
endif
return nil
******************************************
*BUSCA LOS DATOS EN NODO EN ESPECIFICO XML
*APORTE EN EL FORO DE FW
******************************************
Function SearchPathXml( cFileName , cPath )
Local oDoc, oNode, aNodes
Local cPath2 := "/" + StrTran( cPath , " -> " , "/" )
aNodes := HB_ATokens(cPath , " -> ")
oDoc := TXmlDocument():New( cFileName )
oNode := oDoc:CurNode
oNode := oDoc:FindFirst( ATAIL(aNodes) )
DO WHILE oNode != NIL
if HB_ISOBJECT(oNode)
if oNode:Path() == cPath2
exit
endif
else
exit
endif
oNode := oDoc:FindNext()
ENDDO
Return(oNode)
Re: Como detecto si un archivo es del tipo XML?
Posted: Fri Nov 10, 2023 5:37 am
by goosfancito
Gracias,
En mi caso la linea que llama a curNode me da error
Compiler version: Harbour 3.2.0dev (r2104281802)
FiveWin version: FWH 21.11
C compiler version: Borland/Embarcadero C++ 7.6 (32-bit)
Windows version: 6.2, Build 9200
Time from start: 0 hours 0 mins 2 secs
Error occurred at: 10/11/2023, 06:24:00
Error description: Error BASE/1004 Message not found: TXMLDOCUMENT:CURNODE
Args:
[ 1] = O TXMLDOCUMENT
Re: Como detecto si un archivo es del tipo XML?
Posted: Fri Nov 10, 2023 12:56 pm
by karinha