XML complexType с элементом, который заканчивается как «XmlElement» - PullRequest
0 голосов
/ 04 августа 2009

В моем XSD у меня есть что-то похожее на это:

<?xml version="1.0" encoding="utf-8" ?>
<schema xmlns:jump="testThingy" elementFormDefault="qualified" targetNamespace="testThingy" xmlns="http://www.w3.org/2001/XMLSchema">
  <element name="command" type="jump:commandType" />
  <complexType name="loginType">
    <sequence>
      <element name="userName" />
    </sequence>
  </complexType>
  <complexType name="commandType">
    <sequence>
      <choice>
        <element name="login" type="jump:loginType" />
        <element name="logout" />
      </choice>
      <!-- There are other elements here but they are IRRELEVANT to the question -->
    </sequence>
  </complexType>
</schema>

Итак, используя инструмент XSD to C # (xsd.exe или Xsd2Code), генерируется 2 класса (commandType и loginType). Но если я хочу отправить команду выхода из системы, XML должен выглядеть следующим образом:

<command>
    <logout />
</command>

Но у меня нет - какого-либо эквивалента - logoutType. В сгенерированном классе, если я хочу использовать выход из системы, то commandType ожидает «XmlElement».

Предполагая, что инструменты XSD to C # не могут сгенерировать этот класс для меня, как вы пишете класс, который в основном сводится к простой сериализации и имеет тип XmlElement, поэтому он подходит для commandType?

(примечание: я не могу контролировать XSD, иначе я бы изменил его, добавив новый complexType)

1 Ответ

0 голосов
/ 04 августа 2009

На основании опубликованной схемы ясно, почему у вас есть XmlElement для logout. Как вы думаете, тип элемента logout? Это xs:anyType. Это может быть что угодно. Единственный тип .NET, который соответствует XmlElement, если вы не предпочитаете object.

Что вы хотели вместо XmlElement?

...