簡體   English   中英

MS Access導出XML,但在vba中排除ID元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM