Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导入xml文件并引用xsd文件_Xml_Ms Access_Xsd_Vba - Fatal编程技术网

导入xml文件并引用xsd文件

导入xml文件并引用xsd文件,xml,ms-access,xsd,vba,Xml,Ms Access,Xsd,Vba,我试图找到一种导入xml文件的方法,使用一个单独的xsd文件(不嵌入xml) 是我知道如何导入xml文件的基本方法(其中varResult是从文件选择器例程传递的变量)。据我所知,你可以使用三个基本论点,而这与我的意图无关。如果我要导入我拥有的xml文件,它不会为其中一个表创建多个记录;相反,这些值只会覆盖上一条记录 我知道如何使用nodelist遍历节点,手动获取值,循环遍历,构建临时表,并将数据从临时表迁移到可移植表,但这是大量的编码,只是为了弥补我不知道如何以编程方式引用xsd文件这一事实

我试图找到一种导入xml文件的方法,使用一个单独的xsd文件(不嵌入xml)

是我知道如何导入xml文件的基本方法(其中varResult是从文件选择器例程传递的变量)。据我所知,你可以使用三个基本论点,而这与我的意图无关。如果我要导入我拥有的xml文件,它不会为其中一个表创建多个记录;相反,这些值只会覆盖上一条记录


我知道如何使用nodelist遍历节点,手动获取值,循环遍历,构建临时表,并将数据从临时表迁移到可移植表,但这是大量的编码,只是为了弥补我不知道如何以编程方式引用xsd文件这一事实,为了使用通用导入命令。

我认为ImportXML方法不够健壮,无法完成您想要做的事情。如果您已经在使用AppendData选项,但它没有将数据附加到您的规范中,那么我相信您必须找到一种不同的方法来执行此操作

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

您已经指出,您已经知道如何加载XML文件并遍历它以导入数据。我的研究表明,如果ImportXML文件不能完成您需要它完成的任务,那么就没有简单的方法将XML文件导入到现有表中。您可以通过将XML文件作为ADO记录集加载来简化手动导入

请查看此相关链接:

AFAIK没有ImportXML选项来引用单独的xsd文件。但是,由于您知道xml和xsd文件的名称和位置,也许可以将它们合并,并将其馈送到合并的文件以导入xml

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

  • 将xsd标记行添加到xml文件的根目录中
  • 将xml数据根更改为包含
    xsi:noNamespaceSchemaLocation=“YourXsdFile.xsd”

  • 这两种方法似乎都有点笨拙。问题是。。。与打开xml文档然后解析和存储值相比,您能用更少的代码来完成吗

    你能将xsd文件中的内容插入xml文件并导入修改后的版本吗?对……我明白你的意思了。好吧,至少我有一个方法来完成它,只是需要大量的代码。但是,如果我们也尝试这样做的话,情况也应该如此。谢谢你,汉斯!
     Application.ImportXML DataSource:=varResult, ImportOptions:=acAppendData