0

私はそれを読んで解釈し、xsdツールから生成されたそれぞれのクラスに変換したいxmlファイルを持っています。私が試している手順は次のとおりです。

  1. XSDファイルを作成しました。
  2. それぞれの xsd ファイルをそれぞれのクラスのセットに変換しました。
  3. 同じ一連のクラス (ステップ 2 から) と xmlserializer を使用して、いくつかの xml ファイルを作成しました。
  4. 今、私はそれらの xml ファイルから読み返していますが、それをクラスに変換したくありません (ステップ 2 から生成)。

今まで作業したコードを貼り付けますが、逆シリアル化すると例外が発生するようです{"XML 文書 (0, 0) にエラーがあります"}

            var doc = XDocument.Load(filePath);

        var query2 = from b in doc.Root.Descendants()
                     select b;

        foreach (var item in query2)
        {
            switch (item.Name.LocalName)
            {
                case "SomeStringValue": 
                    XmlSerializer srz = new XmlSerializer(typeof(SomeClassGeneratedfromXSD));
                    var writer=item.CreateReader();
                    parameterFromFile.SomeProperty = (SomeClassGeneratedfromXSD)srz.Deserialize(writer);
                    //srz.Deserialize(item);
                    break;

私のxsdがどのように見えるかのスニペットを貼り付けています:

<xs:complexType name="Parameters">
<xs:all>
  <xs:element name="A">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="mstns:Restricted8CharString">
          <xs:attribute name="Caption" use="required" fixed="Caption for A">
            <xs:simpleType>
              <xs:restriction base="xs:string"></xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="ActionWhenMaxReached" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:short">
                <xs:pattern value="[1-3]"></xs:pattern>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="Expression" type="xs:string" default="0" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="B">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:short">
          <xs:attribute name="Caption" use="prohibited">
            <xs:simpleType>
              <xs:restriction base="xs:string"></xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="ActionWhenMaxReached" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:short">
                <xs:pattern value="[1-3]"></xs:pattern>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="Expression" type="xs:string" default="0" />
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  </xs:all>
  </xs:complexType>
4

2 に答える 2

0

終了タグが正しくありません。そのはず:

</xs:complexType>

そしてそうではない

</xs:complexType name="Parameters">
于 2013-03-30T11:09:29.143 に答える