XML 到 Microsoft Access - 避免丢失密钥

XML 到 Microsoft Access - 避免丢失密钥

我想将 XML 文档导入 Microsoft Access 2010。以下是 XML 的一个示例:

<ROWSET>   
    <BIOG>
      <BIOG_NBR>    10021616    </BIOG_NBR>
      <FIRST_NAME>  Marvin      </FIRST_NAME>
      <LAST_NAME>   Rumple      </LAST_NAME>
      <ADDRESS_LIST>
        <ADDRESS_TYP>
          <ORG1>        UNICEF      </ORG1>
          <ADDRESS_TYPE>Work        </ADDRESS_TYPE>
          <LINE_2>      23322 Bovine Blvd   </LINE_2>
          <US_ZIP>      770303411           </US_ZIP>
          <CONTACT_LIST/>   
        </ADDRESS_TYP>
        <ADDRESS_TYP>
          <ORG1>        MENSA   </ORG1>
          <ADDRESS_TYPE>Leisure </ADDRESS_TYPE>
          <LINE_2>      421 Porcine Lane    </LINE_2>
          <US_ZIP>      770303411           </US_ZIP>
          <CONTACT_LIST/>
        </ADDRESS_TYP>
      </ADDRESS_LIST>
    </BIOG>

这是一个格式良好的 XML 文档。它有一个DTD定义文档,但我删除了声明,因为 Access 导入不会接受它。 <ROWSET>是根元素。 我的示例很简单——模式中有八个表。

当我导入这个时,我得到了两个表,BIOGADDRESS_TYP。但ADDRESS_TYP没有显示外键BIOG_NBR

在此处输入图片描述

我该如何实现这一点?我想到了一些方法:

  1. <BIOG_NBR>____</BIOG_NBR>使用带有正则表达式的文本编辑器在每个 实例后立即插入<ADDRESS_TYP>。这很不雅观,而且由于文件为 200Mb,因此可能不切实际。
  2. 使用另一个 XML 解析器将所有数据导出到 csv 文件。这将是我的第一选择,但我的工作场所限制不允许这样做。
  3. 使用某种转换,例如XSD。我已经使用这种方法来呈现 HTML,但它适用于此任务吗?(然后,我是否仍然需要 XML 解析器?显然是的......)
  4. 在 VBA 中使用 Microsoft XML 库。(申请?)

简而言之: 我是否应该使用原生 XML 工具(如选项 3 所示)?我是否遗漏了其他方法?

答案1

这太容易了。

步骤 1 - 使用标准 Access“导入 XML”选项导入数据。仅限结构。

步骤 2——转到每个表并添加一个用于获取缺失键的字段。

步骤 3 - 使用 VBA。添加Microsoft XML, v6.0库。即使是这一段多余的代码也告诉我,根据需要将密钥写入每个表将很简单。

Dim oDoc As MSXML2.DOMDocument
Dim fSuccess As Boolean
Dim oRoot As MSXML2.IXMLDOMNode
Dim oSoftkey As MSXML2.IXMLDOMNode
Dim oAttributes As MSXML2.IXMLDOMNode

Set oDoc = New MSXML2.DOMDocument

oDoc.async = False
oDoc.validateOnParse = False

fSuccess = oDoc.Load(strPath & "\specimen.xml")

If Not fSuccess Then Exit Sub

' Get the root of the XML tree.
Set oRoot = oDoc.documentElement
For Each oSoftkey In oRoot.ChildNodes

  For Each oAttributes In oSoftkey.ChildNodes

      Debug.Print oAttributes.Text
  Next
Next oSoftkey

相关内容