Ich versuche, eine Baumansicht in einem VB 2008-Projekt zu erstellen, das alle Elemente und Attribute eines XML-Schemas zeigt. Die MSDN-Dokumentation für XML-Schemas scheint zu implizieren, dass durch Laden des Schemas in ein XMLSchemaSet und dessen Kompilieren ich Zugriff auf alle Elemente und Attribute mit ihren Werten erhalten sollte, aber dies scheint in der Praxis nicht zu funktionieren.TreeView mit XSD-Elementen und Attributen in VB 2008 füllen
ein for-Schleife wie:
For Each elem As XmlSchemaElement In compiledSchema.Elements.Values
I elem.Name
kann die Elementnamen (und den Namen mit einer ähnlichen verschachtelten Schleife Attribut) für eine einfache Art zu erhalten, aber diese für einen Komplex nicht funktioniert Art.
Immer wenn (und wie auch immer) ich versuche, Werte für komplexe Typen zu erhalten, stoße ich auf eine Mauer.
Als Beispiel gibt das folgende Schema nur das Element "bookstore" zurück.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://www.contoso.com/books" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="bookstore">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="author">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="name" type="xs:string" />
<xs:element minOccurs="0" name="first-name" type="xs:string" />
<xs:element minOccurs="0" name="last-name" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="price" type="xs:decimal" />
</xs:sequence>
<xs:attribute name="genre" type="xs:string" use="required" />
<xs:attribute name="publicationdate" type="xs:unsignedShort" use="required" />
<xs:attribute name="ISBN" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Gibt es eine Möglichkeit von der TreeView-Steuerelement bevölkert, so dass es zeigt:
bookstore
book
genre
publication date
isbn
title
author
first-name
last-name
price
Dies gilt nicht für XML-Schema zu arbeiten. Es gibt keine Möglichkeit, nur die Elementnamen-Zeichenfolge zurückzugeben. – melkisadek