1

Xsd2Code を使用して xsd からコードを生成する際に問題があります。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]].

xmldsig で Xsd2Code をうまく使用した人はいますか? 可能であれば、手動ではなく Xsd2Code ジェネレーターでこれを解決したいと思います。他のオプションはありますか?

4

3 に答える 3

0

Xsd2Code オプションで、オプション 'CollectionObjectType' を 'List' ではなく 'Array' に設定します。

于 2015-06-23T11:57:39.183 に答える
0

xsd.exe のみを使用しようとしましたか? (http://msdn.microsoft.com/fr-fr/library/x6c1kb0s%28v=vs.80%29.aspx)

失敗した xsd コードの一部で質問を更新できますか?

于 2012-08-10T07:24:49.540 に答える
0

問題は、ファイルの先頭にある 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 ''>
  ]>

これをコメントアウトすると、コード生成が機能します。この問題は 2009 年に xsd2code に報告されました: https://xsd2code.codeplex.com/discussions/45133。未解決の問題が続いているようです。

于 2014-07-05T03:01:41.703 に答える