Gib alle Knoten aus der XML-Datei, auch wenn Sie leer sind

Ich habe eine XML-Datei abgerufen werden über WSDL-Datei in Access 2010 per VBA. Die XML-Datei ist das sitzen in dieser variable

Dim xmlDoc As New DOMDocument60

Den Teil der XML, die ich bin daran interessiert, der aussieht wie die unten und im Grunde nur wiederholt sich für jeden UserBean. Ein UserBean ist im Grunde ein Benutzerkonto im system.

<UserBean xsi:type="ns1:UserBean">  
    <primaryKey xsi:type="xsd:string">49084</primaryKey>  
    <updateIndex xsi:type="xsd:int">14</updateIndex>  
    <deleted xsi:type="xsd:boolean">false</deleted>  
    <loginID xsi:type="xsd:string">61420313556</loginID>  
    <name xsi:type="xsd:string">Andrew Mills</name>    
    <teams xsi:type="soapenc:Array" soapenc:arrayType="xsd:string[1]">  
        <string xsi:type="xsd:string">Maintenance</string>  
    </teams>  
    <timezone xsi:type="xsd:string">Australia/Brisbane</timezone>  
    <userTypePK xsi:type="xsd:string">3776</userTypePK>  
    <description xsi:type="xsd:string"/>  
    <emailAddress xsi:type="xsd:string"/>  
    <phoneNumber xsi:type="xsd:string"/>  
    <faxNumber xsi:type="xsd:string"/>  
    <pagerNumber xsi:type="xsd:string"/>  
    <mobileNumber xsi:type="xsd:string">61420313556</mobileNumber>  
    <securityQuestion xsi:type="xsd:string">__INVALID</securityQuestion>  
    <securityAnswer xsi:type="xsd:string"/>  
    <synchronisation xsi:type="soapenc:Array" soapenc:arrayType="ns2:SynchronisationBean[0]" xmlns:ns2="http://soap2.nads.econz.co.nz"/>  
</UserBean>

Das problem ist, dass nicht jedes Feld muss ausgefüllt werden.
Daher einige Knoten haben keine Daten
Mit dem MSXML2 Bibliothek in VBA gibt nur Knoten, wenn es wirklich text.
Also den code unten zurück, eine variable Anzahl von Knoten je nach dem, was jeder userbean enthält. Zum Beispiel, einige Benutzer haben nicht mobileNumber aufgefüllt.

Set nodes xmlDoc.selectNodes("//UserBean")
For Each node in nodes  
    debug.print node.text  
next node

Den oben genannten code gibt eine lange Zeichenkette, in der alle Werte aller untergeordneten Knoten (mit Bezug auf die Userbean Knoten), aber nur diejenigen, die text. Ich versuche, dies in eine Tabelle in Access und wenn einige Knoten fehlen einige Zeit, ich habe keine Möglichkeit, das zu prüfen... oder muss ich?

Wie kann ich wieder ALLE Knoten, ob Sie gefüllt sind oder nicht
ODER
Wie identifiziere ich die Namen der Knoten, der den text, damit ich weiß, wo Sie den Wert in die Tabelle in Access?

UPDATE
Weiter unten die Kommentare, was ich nach der ist eine Liste von Userbeans, die in sich selbst eine Liste...also in der Tat habe ich nach einer Liste von Listen...so in diesem Sinne habe ich versucht, das unten, aber es scheiterte an der ersten For Each Schleife. Offensichtlich, dass die Art der Schleife nicht umgehen kann mithilfe von Listen, wie Sie einen Zähler für eine andere Liste. Gibt es eine Möglichkeit, um dieses?

Dim node As MSXML2.IXMLDOMNode
Dim userbeans As MSXML2.IXMLDOMNodeList
Dim userbean As MSXML2.IXMLDOMNodeList

Set userbeans = xmlDoc.selectNodes("//UserBean")
For Each userbean In userbeans '**Type mismatch error here**
    For Each node In userbean
          Debug.Print node.nodeName & ":" & node.Text
    Next node
Next userbean
Vielleicht: debug.print node.nodename & "=" & node.text
Das ist in der Nähe @Tim Williams. Das Ergebnis des Codes wird UserBean=4908414false614203Andrew....etc also die Felder sind nicht gebrochen bekommen. Die UserBean ist wirklich eine Liste von Knoten, die aber hier behandelt wie ein Knoten.
Wenn überhaupt möglich,, spin-up eine SQL-server-engine -- es hat WEITAUS bessere XML-Kapazitäten als Zugang. FWIW.
sorry, was meinst du mit 'spin up eine SQL-server-engine'? Glücklich zu tun, dies in die effizienteste Art und Weise möglich.
Microsoft SQL-Server. Die Express-version enthält die vollständige syntax, und können leicht dienen als back-end zu einer einzigen desktop-Anwendung. Und wenn es ein multi-user-Zugriff Anwendung, Sie sollten wirklich die Migration zu einem zentralen Netzwerk-box.

InformationsquelleAutor zoonosis | 2013-05-22

Schreibe einen Kommentar