Como detecto si un archivo es del tipo XML?

Como detecto si un archivo es del tipo XML?

Postby goosfancito » Thu Nov 09, 2023 12:00 pm

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.
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Como detecto si un archivo es del tipo XML?

Postby Antonio Linares » Thu Nov 09, 2023 12:02 pm

Puedes comprobar si tiene estos caracteres al comienzo "<xml"
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Como detecto si un archivo es del tipo XML?

Postby goosfancito » Thu Nov 09, 2023 12:22 pm

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 view
 
   hFile    := FOpen( aFiles[ 1 ] )
   oXmlDoc  := TXmlDocument():New( hFile )
   oXmlIter := TXmlIterator():New( oXmlDoc:oRoot )

   oTagActual = oXmlIter:NEXT()

   IF ( AllTrim( oTagActual:cName ) != 'xml' )
      ? "error"
...
 
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Como detecto si un archivo es del tipo XML?

Postby Antonio Linares » Thu Nov 09, 2023 12:31 pm

Que te hace suponer que oTagActual:cName vale 'xml' ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Como detecto si un archivo es del tipo XML?

Postby goosfancito » Thu Nov 09, 2023 7:05 pm

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?
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Como detecto si un archivo es del tipo XML?

Postby goosfancito » Thu Nov 09, 2023 7:09 pm

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
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Como detecto si un archivo es del tipo XML?

Postby Armando » Thu Nov 09, 2023 7:20 pm

Goosfancito:

No te vale la extensión?

Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
User avatar
Armando
 
Posts: 3228
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Como detecto si un archivo es del tipo XML?

Postby acuellar » Thu Nov 09, 2023 9:29 pm

Goosfancito:

Intenta asi:
Code: Select all  Expand view

 oFile:= TTxtFile():New( "archivo.xml" )
cLinea:=oFile:ReadLine()
If (At('xml',cLinea)>0
  ?"Es xml"
Else
 ?"No es xml"
Endif
oFile:End()

 
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1643
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Como detecto si un archivo es del tipo XML?

Postby leandro » Thu Nov 09, 2023 9:30 pm

Creo que esto te puede servir, es un aporte de nuestro colega Carlos Gallego

https://forums.fivetechsupport.com/viewtopic.php?f=6&t=42322&p=254348&hilit=nodo+especifico&sid=0198c82ce4b6837c5e69d404961f2d2f&sid=d50124788ff4e4ca5d20e1db01d8b09f#p254367

Code: Select all  Expand view

#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)
 
Saludos
LEANDRO AREVALO
Bogotá (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Embarcadero C++ 7.60 for Win32 ] [ FiveWin 23.07 ] [ xHarbour 1.3.0 Intl. (SimpLex) (Build 20230914) ]
User avatar
leandro
 
Posts: 1676
Joined: Wed Oct 26, 2005 2:49 pm
Location: Colombia

Re: Como detecto si un archivo es del tipo XML?

Postby goosfancito » Fri Nov 10, 2023 5:37 am

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
FWH 21.02
Harbour 3.2.0dev (r2104281802)
Copyright (c) 1999-2021, https://harbour.github.io/
User avatar
goosfancito
 
Posts: 1954
Joined: Fri Oct 07, 2005 7:08 pm

Re: Como detecto si un archivo es del tipo XML?

Postby karinha » Fri Nov 10, 2023 12:56 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7824
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 113 guests