XML complexType с элементом, который заканчивается как "XmlElement"
В моем 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 ответ
На основе схемы, которая была опубликована, понятно, почему у вас есть XmlElement
за logout
, Как вы думаете, тип logout
элемент есть? Это xs:anyType
, Это может быть что угодно. Единственный тип.NET, который соответствует этому XmlElement
, если вы не предпочитаете object
,
Что ты хотел вместо XmlElement
?