【问题标题】:export nested XML file from access. need XML file with nodes [duplicate]从访问中导出嵌套的 XML 文件。需要带有节点的XML文件[重复]
【发布时间】:2013-09-24 14:35:56
【问题描述】:

我需要从 Access 创建一个 XML 文件。它必须具有关系节点类型格式。

例如:

<Item>
   <description></description>
   <colors>
         <blue>
         <green>
   </colors>
</item>

项目的数据在表格中。颜色在另一个。我有参考 ID,所以我可以加入他们。

如何/可以做到这一点。我已经查看了所有内容,了解如何导出表格,但不是嵌套类型的文件。

【问题讨论】:

    标签: xml ms-access vba


    【解决方案1】:

    创建一个SELECT 查询,该查询使用参考 ID 将您的项目表与颜色表连接起来。

    一旦您有一个正确收集信息的查询,请从 Access 用户界面将其数据导出到 XML。

    如果这为您提供了所需的 XML,您可以使用 Application.ExportXML Method 从 VBA 自动执行导出操作。请注意,该方法提供了许多选项来调整 XML。但是导出可能就这么简单...

    Application.ExportXML acExportQuery, "YourQuery", _
        "C:\SomeFolder\YourQuery.xml"
    

    【讨论】:

    • [code]1测试项目Blue1 Test ItemGreen1Test ItemBlue [/code]
    【解决方案2】:

    下面是我用来查询数据然后将结果导出到平面文件的示例。我已经根据您的需要对其进行了一些调整。

     On Error GoTo Err_My_Click
     Dim rs As DAO.Recordset
     Set rs = CurrentDb.OpenRecordset("SELECT * FROM MyTable", dbOpenDynaset)
    
     If (rs.RecordCount <> 0) Then
       rs.MoveFirst
    
       Open "C:\Export\XML__MyFile.xml" For Output As #1
    
       Do While rs.EOF = False
         TempExportCount = TempExportCount + 1
    
         Print #1, "<Item>"
         Print #1, "    <description>" & rs.Fields("[Description]").value & "</description>"
         Print #1, "</Item>"
    
         rs.MoveNext
       Loop
     End If
    
    Exit_My_Click:
      On Error Resume Next
      rs.Close
      Set rs = Nothing
      Close 1#
      Exit Sub
    Err_My_Click:
      If (Err.Number = 76) Then
        MsgBox ("The program could not save the txt file." & vbNewLine & vbNewLine & _
                "Make sure you have the following folder created: C:\Export\")
      Else
        MsgBox (Err.Description)
      End If
      Resume Exit_My_Click
    

    【讨论】:

      【解决方案3】:

      我用附件在大约五分钟内生成了一个300万行的嵌套xml。

      有两个关键项,

      1) 一段简单的VB,

      Public Function Export_ListingData()
      
          Dim objOtherTbls As AdditionalData
      
          On Error GoTo ErrorHandle
          Set objOtherTbls = Application.CreateAdditionalData
          objOtherTbls.Add "ro_address"
          objOtherTbls.Add "ro_buildingDetails"
          objOtherTbls.Add "ro_businessDetails"
          objOtherTbls.Add "ro_businessExtras"
          objOtherTbls.Add "ro_businessExtrasAccounts"
          objOtherTbls.Add "ro_businessExtrasAccom"
          objOtherTbls.Add "ro_businessExtrasAccom2"
      
          Application.ExportXML ObjectType:=acExportTable, _
                      DataSource:="ro_business", _
                      DataTarget:="C:\Users\Steve\Documents\Conversions\ListData.xml", _
                      AdditionalData:=objOtherTbls
      Exit_Here:
              MsgBox "Export_ListingData completed"
              Exit Function
      ErrorHandle:
              MsgBox Err.Number & ": " & Err.Description
              Resume Exit_Here
      End Function
      

      2) 使用从主键到外键的连接来链接关系管理器中的表。

      如果它们没有关系,则代码将生成一个顺序的 xml 文件,如果有 主键之间的关系会出现 31532 错误,数据导出会失败。

      【讨论】:

      • 请不要对多个问题逐字发布相同的答案。如果问题实际上是相同的,请标记以将它们作为重复项关闭。
      猜你喜欢
      • 1970-01-01
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-31
      • 1970-01-01
      相关资源
      最近更新 更多