2012-03-09 65 views
0

我正在使用Access/VBA來允許用戶上載XML文件以構建數據庫結構。這在當前的代碼,我會適當地給我_MAP名字,我需要做後面的步驟,以XML數據上傳到從XLS/XML overlay'd文件的數據庫: 代碼:VBA確定XSD元素「名稱」

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> 

它將返回「調查」這正是我需要做的。

我現在想要做的是讓用戶選擇從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:元素')

OR 代碼:

(返回 '元素')

我需要做些什麼才能在此行XSD中返回「調查」: 代碼:

<xs:element name="Survey"> 

在此先感謝!

回答

0

喜歡的東西

xmlDom.DocumentElement.FirstChild.GetAttribute("Name") 
0

這是正確的答案:

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