2012-12-04 64 views
2

我有這樣一個XML文件:如何將僅帶特定標籤的XML導入Access數據庫?

<Example> 
    <A> 
    <a1>1</a1> 
    <a2>2</a2> 
    </A> 
    <B> 
    <b1>1</b1> 
    <b2>2</b2> 
    <b3>3</b3> 
    </B> 
    <B> 
    . 
    . 
    . 
    </B> 
</Example> 

當我使用Application.ImportXML Me.XMLpath, acStructureAndData,它將導入這兩個表A和B.所以我怎麼可能只需要導入表B中沒有阿? (A可能有10多個不同的表格)。感謝您的幫助!爲提示

+2

實現的最簡單解決方案可能是將所有內容導入到臨時表中,然後將所需的臨時表添加到最終的目標表中。如果您願意投入更多精力,則可以將XML文檔作爲「MSXML DOMDocument」打開,並使用其方法僅提取所需的值,然後將它們存儲在表中。你可以在這個SO回答中找到一些有關這種方法的提示:http://stackoverflow.com/a/3398999/77335 – HansUp

+0

感謝您的幫助!給我一個這個問題的大提示! – Ibrows

回答

1

謝謝,下面是我做了什麼......

Dim db As Database 
Set db = CurrentDb() 
Dim xDoc As MSXML.DOMDocument 
Set xDoc = New MSXML.DOMDocument 
Dim xNote As IXMLDOMNode 
Dim x As IXMLDOMNodeList 
Dim XMLpath, sSQL As String 

XMLpath = Me.Text1 
xDoc.validateOnParse = False 
sSQL = "INSERT INTO Temp VALUES ('" 

If xDoc.Load(XMLpath) Then 
    Set x = xDoc.getElementsByTagName("_TargetTag") 
Else 
    MsgBox "XML file ERROR" 
    Exit Sub 
End If 

For j = 0 To x.length - 1 
    For i = 0 To lengthOfChildNode 
     sSQL = sSQL & x(j).childNodes(i).nodeTypedValue & "','" 
    Next i 
    sSQL = Left(sSQL, Len(sSQL) - 2) & ");" 
    db.Execute sSQL 
    sSQL = "INSERT INTO Temp VALUES ('" 
Next j 

到目前爲止,我得到了我所需要的,但可以改善這個代碼,我可能是任何想法非常讚賞。謝謝!

相關問題