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.
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.
Puedes comprobar si tiene estos caracteres al comienzo "<xml"
<?xmlasd version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl"
hFile := FOpen( aFiles[ 1 ] )
oXmlDoc := TXmlDocument():New( hFile )
oXmlIter := TXmlIterator():New( oXmlDoc:oRoot )
oTagActual = oXmlIter:NEXT()
IF ( AllTrim( oTagActual:cName ) != 'xml' )
? "error"
...Que te hace suponer que oTagActual:cName vale 'xml' ?
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?
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
Goosfancito:
No te vale la extensión?
Saludos
oFile:= TTxtFile():New( "archivo.xml" )
cLinea:=oFile:ReadLine()
If (At('xml',cLinea)>0
?"Es xml"
Else
?"No es xml"
Endif
oFile:End()#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)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
#include "hbxml.ch"