导入xml文件并引用xsd文件

时间:2011-05-25 15:11:52

标签: xml ms-access vba xsd access-vba

我正在尝试找到一种导入xml文件的方法,其中xsd是一个单独的文件(未嵌入xml中)。

 Application.ImportXML DataSource:=varResult, ImportOptions:=acAppendData

是我知道如何导入xml文件的基本方法(其中varResult是从FilePicker例程传递的变量)。据我所知,你可以使用三个基本参数,这与我想要达到的目的无关。如果我要导入xml文件,我就不会为其中一个表创建多个记录;相反,这些值只会覆盖以前的记录。

我知道如何通过节点列表遍历节点,手动获取值,循环遍历,构建临时表,并将数据从temps迁移到proTables,但这很多是编码,只是为了制作因为我不知道如何以编程方式引用xsd文件,以便使用通用导入命令。

2 个答案:

答案 0 :(得分:1)

我认为ImportXML方法不够强大,无法做你想做的事情。如果您已经使用了AppendData选项并且没有将数据附加到您的规范中,那么我相信您必须找到一种不同的方法。

在我自己的ExportXML实验中,我认为数据结构定义包含在XML文件中。我认为Import XML期望相同,并且没有其他选择。

您已经表明您已经知道如何加载XML文件并迭代它以导入您的数据。我的研究表明,如果ImportXML文件没有按照您的要求执行操作,则没有简单的方法将XML文件导入现有表。您可以通过将XML文件作为ADO Recordset加载来简化手动导入。

看看这个相关链接:
http://bytes.com/topic/access/answers/504646-append-ado-recordset-table

答案 1 :(得分:1)

AFAIK没有ImportXML选项来引用单独的xsd文件。但是,既然您知道xml和xsd文件的名称和位置,也许您可​​以合并它们并将合并文件提供给ImportXML。

我自己没试过,但怀疑你可以通过两种方式进行合并:

  1. 将xsd标记行添加到xml文件的根目录
  2. 将xml dataroot更改为包含xsi:noNamespaceSchemaLocation="YourXsdFile.xsd"
  3. 这两种方法似乎都很笨拙。问题是......你能用比打开xml doc然后解析和存储值所花费的代码少得多的代码吗?