Hej! använder su MsXml.DomDocument? Hej! Problemet är väl här:Koll om subElement finns i XMLElement
Hur kollar jag om ett visst subelement existerar i ett XMLelement?
Jag använder Access 2000.
Mvh,
SofiaSv: Koll om subElement finns i XMLElement
Det bör bli så här ungefär.
Set Noden = XmlElement.SelectSingleNode ( "ElementSomSoktes" )
If Noden Is Nothing Then
'finns inte
Else
'finns
End IfSv:Koll om subElement finns i XMLElement
Jag inser att jag utelämnade lite väl mycket information när jag skrev frågan.
Problemet är att noden MaterialGroup ska användas om den finns med i xmlelementet annars ska "Type" användas istället. Något av dessa finns alltid med.
Så här der det ut:
Public Function makeComponentCollector(elementData As XMLElement) As DataCollectorComponent
Dim coll As New DataCollectorComponent
coll.MaterialGroup = elementData.findSubElement("MaterialGroup").pcdata
'osv....
ENd function
XMLElement-classen:
---------------------------------------------
Option Explicit
Public elementName As String 'The element name.
Public closed As Boolean 'Signifies wether we have encountered the end
'of this element yet.
Public pcdata As String 'Any PCDATA present in the element.
Private hash As New BadHash 'This list of objects cannot be guaranteed to
'hold relevant data until closed is True, but
'theese are the resulting object from treating
'child elements of this one.
'Will find the FIRST subelement in the given element that is of the specified type name.
Public Function findSubElement(Name As String) As XMLElement
Set findSubElement = hash.retrieveFirst(Name)
End Function
----------------------------------------------------------------------------------------
BadHash-klassen som om den inte hittar något skickar felmeddelande:
----------------------------------------------------------------------------------------
Option Compare Database
Option Explicit
Private keyColl As New Collection
'This function will retrieve the very first value matching the
'key, or Null if not present.
Public Function retrieveFirst(key As String) As Object
Dim hit As Collection
On Error GoTo CATCH
Set hit = keyColl.Item(key)
Set retrieveFirst = hit.Item(1)
Exit Function
CATCH:
'If no matching key is found, return Null.
Set retrieveFirst = Nothing
Exit Function
End Function
Om den går in i felhanteringen i retrieveFirstKey kastas felet långt tillbaka och hanteras som att ett allvarligt fel inträffat och transaktion avbryts och "rollas" tillbaka.
Jag vill ju fånga detta innan det ens går till felhanteringen.
Några förslag?
Mvh, Sofia
Sv: Koll om subElement finns i XMLElement
elementData.findSubElement("MaterialGroup").pcdata
Om findSubElement returnerar Nothing,
så exekveras "Nothing.pcdata"
och det går ju inte..
Gör så här i stället:
Dim o as object
Dim PcDatat as object
Set o = elementData.findSubElement("MaterialGroup")
If Not o Is Nothing Then
Set PcDatat = o.pcdata ' om det är objekt??
End IF