FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Como detecto si un archivo es del tipo XML?
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Como detecto si un archivo es del tipo XML?
Posted: 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/
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 12:02 PM

Puedes comprobar si tiene estos caracteres al comienzo "<xml"

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: 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 (fw): Select all Collapse
  
   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/
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 12:31 PM

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

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 07: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/
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 07: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/
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 07: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
Posts: 1710
Joined: Tue Oct 28, 2008 06:26 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 09:29 PM
Goosfancito:

Intenta asi:
Code (fw): Select all Collapse
 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.
Posts: 1816
Joined: Wed Oct 26, 2005 02:49 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: Thu Nov 09, 2023 09: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 (fw): Select all Collapse
#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

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 1956
Joined: Fri Oct 07, 2005 07:08 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: Fri Nov 10, 2023 05: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/
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: Como detecto si un archivo es del tipo XML?
Posted: Fri Nov 10, 2023 12:56 PM
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion