создание сериализуемых классов CS из xsd: какой инструмент использовать? - PullRequest
0 голосов
/ 04 января 2011

Мне нужно определить некоторые классы, которые реализуют определения xsd сторонних производителей.XSD довольно сложный, с множеством ограничений и заканчивает перечисления, поэтому я попытался сэкономить немного времени, используя xsd.exe и xsd2code.Однако сгенерированные классы не учитывают атрибут minoccurs = 0 и, в худшем случае, отображают в enum (int) некоторые типы, определенные как string.Например, приведенный ниже тип отображается как перечисление с тем же именем:

<xsd:element name="CodiceFornitura">
            <xsd:simpleType>
                <xsd:restriction base="xsd:string">
                    <xsd:enumeration value="IMP00"/>
                </xsd:restriction>
            </xsd:simpleType>
    </xsd:element>

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.1")]
    [System.SerializableAttribute()]
    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
    public enum CodiceFornitura
    {
        /// <remarks/>
        IMP00,
    }

Другая проблема заключается в том, что какой-то элемент мигрирует или не может быть сериализован: например, если я отправляю тип документа (скажем, OriginalInvoiceUpdate), я должен добавить кусок xml, в котором указано, какой вызов должен быть заменен, в противном случае этот кусок xml должен быть пропущен.

xsd2code имеет два свойства для генерации кода: GenerateShouldSerialize и GeneratePropertyNameSpecified.Установка первого в true не имеет никакого эффекта, установка второго в All генерирует свойства для всех классов, а не только для minoccurs = 0.

Итак, вопросы таковы: 1. Должен ли я изменить сгенерированные источники в соответствии с моими потребностями, есть ли какие-то конфигурации, которые мне не хватает с xsd.exe или xsd2code?2. что XmlSerializer запишет в xml для перечислений: значение перечисления («1») или строковое представление значения (IMP00)?3. есть другие инструменты для сборки исходников из xsd?

Заранее спасибо за любую помощь

Ответы [ 2 ]

0 голосов
/ 21 ноября 2012

Используем LinqToXsd И WSCF.blue

0 голосов
/ 04 января 2011

Посмотрите на svcutil .Он имеет опции для генерации классов из xsd и гораздо более настраиваемый, чем xsd.exe.

...