Hi team.
I have a question to do, How can I avoid a NilObjectException on a XMLNodeList?
I have a big code elaborated, And I make a query to the XMLfile with this:
Dim nodes, nodes2,nodes3,nodes4,nodes5 As XmlNodeList
nodes = xml.Xql("//cfdi:Conceptos/cfdi:Concepto")
One kind of XML has this //cfdi:Conceptos/cfdi:Concepto".
When It has this there’s no problem, the issue becames when the XML file doesn’t have this.
I tried to avoid it using pragma BreakOnExceptions off but without succeess
Any Ideas?, What AM I wrong?
In synthesis i wanna know if theres a way to analyze with an “IF” the xmlNodelist If the path described exists then Do the rest of the code.
If doesn’t exists, do nothing.
Have a look at Try…Catch in the Language Ref.
Basically your try block would be the
nodes = xml.Xql("//cfdi:Conceptos/cfdi:Concepto")
and you would catch
If nodes = Nil Then
and handle it however is appropriate for your code.
Tim_Hare
(Tim Hare)
4
And you really don’t need try/catch. If xql doesn’t find a match, it returns nil. Test for nil before you try to use the result.
if nodes <> nil then
I’m trying with both but I don’t Got a NILObjectException, I got a XMLException, and that is the explanation in the compiler:
Error Number: 24
Line: Line:1
Message: msg:Invalid namespace prefix ‘//cfdi:Conceptos/cfdi:Concepto’
Node: node.element ‘cfdi:Comprobante’
reason: msg:invalid namespace prefix ‘nomina:Percepcion’
Tim_Hare
(Tim Hare)
6
You said NilObjectException earlier. Try supplying the optional parameter to XQL().
I found Where is the child what am I looking for into the XML File:
xml.FirstChild.Child(4).Child(0).Child(0).name
I also tried with:
Try
call xml.FirstChild.Child(4).Child(0).Child(0).name
Catch err As NilObjectException
End Try
In order to do this: If this child exists then do the code, else do nothing.
Is there a practical way to do it, having no errors?
I found a way to Know if the Child exists:
If xml.FirstChild.Child(4).Child(0).Child(0) <>Nil Then
MsgBox “Existing Child”
Else
Msgbox “Child not exist”
End If
Hi Gerardo,
Glad to see that there is a solution.
There is a book on this topic at Great-White-Software which might help.
Have a good weekend!