2012-03-09 2 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> 

он будет возвращать «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 

('хз: элемент' возвращает)

ИЛИ Код:

('элемент' возвращает)

Что мне нужно сделать для того, чтобы «Survey» вернулась в эту строку XSD: Код:

<xs:element name="Survey"> 

Заранее благодарен!

ответ

0

Что-то вроде

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

Это правильный ответ:

xmlDom.DocumentElement.FirstChild.Attributes.getNamedItem("name").NodeValue 
Смежные вопросы