XmlSerializer - 反序列化外部XML

时间:2011-09-30 02:45:55

标签: c# xml-serialization

我有很多文件,格式为:

<?xml version="1.0" encoding="utf-8"?>
<Words>
  <word>
    <Eng>chain</Eng>
    <EngEnd>chained</EngEnd>
    <PartOfSpeechEng>verb</PartOfSpeechEng>
    <Heb>לקשור עם שרשרת</Heb>
    <EngInHeb>צֵ'ין</EngInHeb>
    <PartOfSpeechHeb>פועל</PartOfSpeechHeb>
    <DicNumber>27</DicNumber>
    <Arb>سلسلة</Arb>
    <EngInArb>
    </EngInArb>
  </word>
  <word>
    <Eng>growl</Eng>
    <EngEnd>growls</EngEnd>
    <PartOfSpeechEng>verb</PartOfSpeechEng>
    <Heb>לנהום</Heb>
    <EngInHeb>גְרַאוּל</EngInHeb>
    <PartOfSpeechHeb>פועל</PartOfSpeechHeb>
    <DicNumber>3</DicNumber>
    <Arb>دمدمة/تذمـُّر</Arb>
    <EngInArb>
    </EngInArb>
  </word>
</Words>

我无法将其反序列化为数组,有人可以帮我反序列化

由于

1 个答案:

答案 0 :(得分:1)

使用xsd.exe创建的架构使用this online tool生成。

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

using System.Xml.Serialization;

// 
// This source code was auto-generated by xsd, Version=4.0.30319.1.
// 


/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false)]
public partial class Words {

    private WordsWord[] wordField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute("word")]
    public WordsWord[] word {
        get {
            return this.wordField;
        }
        set {
            this.wordField = value;
        }
    }
}

/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.0.30319.1")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class WordsWord {

    private string engField;

    private string engEndField;

    private string partOfSpeechEngField;

    private string hebField;

    private string engInHebField;

    private string partOfSpeechHebField;

    private int dicNumberField;

    private string arbField;

    private string engInArbField;

    /// <remarks/>
    public string Eng {
        get {
            return this.engField;
        }
        set {
            this.engField = value;
        }
    }

    /// <remarks/>
    public string EngEnd {
        get {
            return this.engEndField;
        }
        set {
            this.engEndField = value;
        }
    }

    /// <remarks/>
    public string PartOfSpeechEng {
        get {
            return this.partOfSpeechEngField;
        }
        set {
            this.partOfSpeechEngField = value;
        }
    }

    /// <remarks/>
    public string Heb {
        get {
            return this.hebField;
        }
        set {
            this.hebField = value;
        }
    }

    /// <remarks/>
    public string EngInHeb {
        get {
            return this.engInHebField;
        }
        set {
            this.engInHebField = value;
        }
    }

    /// <remarks/>
    public string PartOfSpeechHeb {
        get {
            return this.partOfSpeechHebField;
        }
        set {
            this.partOfSpeechHebField = value;
        }
    }

    /// <remarks/>
    public int DicNumber {
        get {
            return this.dicNumberField;
        }
        set {
            this.dicNumberField = value;
        }
    }

    /// <remarks/>
    public string Arb {
        get {
            return this.arbField;
        }
        set {
            this.arbField = value;
        }
    }

    /// <remarks/>
    public string EngInArb {
        get {
            return this.engInArbField;
        }
        set {
            this.engInArbField = value;
        }
    }
}

你可以像这样使用它

 XmlSerializer mySerializer = new XmlSerializer(typeof(Words));
 FileStream myFileStream = new FileStream("path_to_xml",FileMode.Open);

 Words words  = (Words)mySerializer.Deserialize(myFileStream);
相关问题