Чтение иерархии, типа и вхождения из XSD-файла

1

Я хочу прочитать иерархии, типы и вхождения из XSD файла. До сих пор я только добился импорта файла в объект XmlSchemaSet, из которого я до сих пор не могу прочитать типы string/int/bool, ни макс/мин, ни вхождения или иерархии.

Пример:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema 
  attributeFormDefault="unqualified" 
  elementFormDefault="qualified" 
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
>

  <xs:simpleType name="ActionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="GET"/>
      <xs:enumeration value="POST"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:element name="Data">
    <xs:complexType>
      <xs:all>
        <xs:element name="Action" type="ActionType" minOccurs="1" maxOccurs="1" />
        <xs:element name="Target" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="Parameters" minOccurs="1" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
          <xs:element name="include_entities" maxOccurs="0" />
          <xs:element name="include_user_entities" maxOccurs="0" />
          <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:all>
</xs:complexType>

  • 0
    Схема XML сама по себе является документом XML. XDocument ли вы прочитать его в XDocument и запросить XDocument элементы?
  • 0
    это может быть возможно, однако, на самом деле я хочу импортировать весь XSD в объект C #, чтобы я мог получить в качестве примера: данные данных с типом действия перечисления, строковый объект и т. д.
Теги:
xsd

1 ответ

1

Вы можете попробовать использовать инструмент XSD от Microsoft. Сохраните XSD в формате XML и запустите инструмент XSD с помощью следующей команды:

  xsd file.xml /c

Он будет генерировать сериализуемые объекты для вас. Тогда вы можете использовать:

  XmlSerializer serializer = new XmlSerializer(XmlClassTypeYouCreatedOnXsdTool);
  XmlReader reader = new XmlTextReader(xml);
  var instance = serializer.Deserialize(reader);

Не забудьте запустить командную строку Visual Studio, чтобы установить путь XSD, иначе вы не сможете ее найти.

  • 0
    я могу сгенерировать XmlClassTypeYouCreatedOnXsdTool во время выполнения?
  • 0
    Инструмент XSD создает строго типизированный класс для сериализации любого XML (в вашем случае XSD, также имеющего формат XML) в памяти во время выполнения. Вы можете попытаться создать свое время во время выполнения, используя Reflection, но я не вижу в этом смысла. Вам нужно сериализовать XSD-файлы или XML-файлы? Я полагаю, что до сих пор не понял всей картины вашего вопроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню