Xsd2Code и xmldsig
У меня проблема с генерацией кода из xsd с помощью Xsd2Code. XSD выглядит так:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:ns1="urn:oasis:names:specification:ubl:schema:xsd:CountryIdentificationCode-1.0"
xmlns:ns2="urn:oasis:names:specification:ubl:schema:xsd:LocationIdentificationCode-1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
elementFormDefault="qualified"
attributeFormDefault="unqualified">
<xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="xmldsig.xsd" />
.......
</xs:schema>
Ошибка, которую я получаю, когда пытаюсь сериализовать экземпляр сгенерированного класса:
"Cannot serialize object of type 'MyXSD.SignatureValueType'.
Consider changing type of XmlText member 'MyXSD.SignatureValueType.Value' from System.Byte[] to string or string array."
Ошибка происходит здесь:
[System.Xml.Serialization.XmlTextAttribute(DataType = "base64Binary")]
public byte[] Value
{
get
{
return this.valueField;
}
set
{
this.valueField = value;
}
}
Событие, если я изменю этот атрибут на:
[System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")]
..я получаю другую ошибку:
Type of choice identifier 'ItemsElementName' is inconsistent with type of 'Items'.
Please use array of System.Collections.Generic.List`1[[MyXSD.ItemsChoiceType2, MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].
Кто-нибудь успешно использовал Xsd2Code с xmldsig? Если возможно, я бы лучше решил это с генератором Xsd2Code, а не вручную. Есть ли другой вариант?
3 ответа
В параметрах Xsd2Code установите для параметра "CollectionObjectType" значение "Массив" вместо "Список".
Вы пытались использовать только xsd.exe? (Http://msdn.microsoft.com/fr-fr/library/x6c1kb0s%28v=vs.80%29.aspx)
Можете ли вы обновить свой вопрос с помощью части кода ошибки XSD?
Проблема в определении DOCTYPE в верхней части файла.
<!DOCTYPE schema
[
<!ATTLIST schema
xmlns:ds CDATA #FIXED "http://www.w3.org/2000/09/xmldsig#">
<!ENTITY dsig 'http://www.w3.org/2000/09/xmldsig#'>
<!ENTITY % p ''>
<!ENTITY % s ''>
]>
Прокомментируйте это, и генерация кода будет работать. Эта проблема была сообщена xsd2code в 2009 году: https://xsd2code.codeplex.com/discussions/45133. Похоже, что это остается нерешенной проблемой.