VBA确定XSD元素“名称”

时间:2012-03-09 19:34:29

标签: xml vba xsd

我正在使用Access / VBA来允许用户上传XML文件以构建数据库结构。这是我现有的代码,它将正确地给我一个_Map名称,我需要做以后的步骤,将XML数据从XLS / XML overlay'd文件上传到数据库中: 代码:

Dim myFolder As String
    Form_frmImportSurveyData.txtFile.SetFocus
    myDir = Form_frmImportSurveyData.txtFile.Text

    Dim xmlDom As New DOMDocument
    xmlDom.Load (myDir)

    xmlMap = xmlDom.DocumentElement.nodeName

此代码为我提供了我需要的父节点名称...例如,具有XML结构 代码:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Survey xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Surveyor></Surveyor>
    <Date></Date>
    <Cascade></Cascade>
.......
</Survey>

它将返回'Survey',这是我需要它做的。

我现在想要做的是允许用户从XML模式文件(.XSD)构建数据库结构,以便创建更好的数据库(日期/时间)字段等,而不是所有文本我需要知道如何通过提取XSD文件而不是XML文件来完成上面列出的操作......我的XSD代码如下所示: 代码:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Survey">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Surveyor" type="xs:string" />
                <xs:element name="Date" type="xs:date" />
                <xs:element name="Cascade" />
.....
       </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

如果我现在使用vba代码中的当前行: 代码:

xmlMap = xmlDom.DocumentElement.nodeName

并将其修改为: 代码:

xmlDom.DocumentElement.FirstChild.nodeName

(返回'xs:element')

OR 代码:

xmlDom.DocumentElement.FirstChild.BaseName

(返回'element')

如果要在此XSD行中返回“调查”,我需要做什么: 代码:

<xs:element name="Survey">

提前致谢!

2 个答案:

答案 0 :(得分:0)

这样的东西
xmlDom.DocumentElement.FirstChild.GetAttribute("Name")

答案 1 :(得分:0)

这是正确答案:

xmlDom.DocumentElement.FirstChild.Attributes.getNamedItem("name").NodeValue