[英]MS Access Export XML but exclude ID element in vba
我試圖找到一種方法將所有表導出到XML文件中,但不包括ID列。 從外觀上可以發現,最好的解決方案是僅執行僅包含需要導出的列的查詢。 我的問題是我要導出幾個表,查詢將導致大約一百萬條記錄。 那么有沒有辦法讓我的代碼僅導出所有表並僅排除ID列? 這是我的代碼
Do Until rsR.EOF
On Error GoTo ErrorHandle
Set objOtherTbls = Application.CreateAdditionalData
objOtherTbls.Add "entry"
objOtherTbls.Add "patch"
objOtherTbls.Add "reference"
objOtherTbls.Add "remediations"
objOtherTbls.Add "scanners"
objOtherTbls.Add "tempMitStrat"
objOtherTbls.Add "vms"
Application.ExportXML ObjectType:=acExportTable, _
DataSource:="iavmNotice", _
DataTarget:="C:\Users\" & Environ("USERNAME") & "\Documents\iavms\" & rsR.Fields("iavmNoticeNumber").Value & " (ID " & rsR.Fields("count").Value & ").xml", _
WhereCondition:="[iavmNoticeNumber] = '" & rsR.Fields("iavmNoticeNumber").Value & "'", _
AdditionalData:=objOtherTbls
rsR.MoveNext
Loop
rsR.Close
考慮通過運行Identity Transform(按原樣復制文檔)並在ID元素上使用空模板,在導出原始XML之后,使用XSLT刪除ID :
XSLT (另存為.xsl文件或帶有雙引號轉義並使用loadXML的嵌入式VBA字符串)
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output version="1.0" encoding="UTF-8" indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
<!-- Identity Transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- Removing IDs with Empty Templates (change to actual names) -->
<xsl:template match="iavmNoticeID|entryID|patchID|referenceID|remediationsID|scannersID|tempMitStratID|vmsID"/>
</xsl:transform>
VBA
Public Sub RunXSLT()
Dim xmlDoc As New MSXML2.DOMDocument, xslDoc As New MSXML2.DOMDocument, newDoc As New MSXML2.DOMDocument
xmlDoc.Load "C:\Path\To\Input.xml"
xslDoc.Load "C:\Path\To\XSLT\SCript.xsl"
xmlDoc.transformNodeToObject xslDoc, newDoc
newDoc.Save "C:\Path\To\Output.xml"
Set xmlDoc = Nothing: Set xslDoc = Nothing: Set newDoc = Nothing
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.