c#xml反序列化模式

时间:2018-03-03 20:21:53

标签: c# xml function deserialization

我在XML文件中有一个错误列表,我正在寻找一个解决方案来获取一个错误的信息。 我的文件看起来像这样。

<?xml version="1.0" encoding="utf-8"?>
<List>
  <ListingCodeErreur>
    <Erreur ID="1100" ><Definition classe="0" Plage="Général" Text="Parameters    inside"/></Erreur>
    <Erreur ID="1101" ><Definition classe="1" Plage="Général" Text="Parameters outside"/></Erreur>
    <Erreur ID="1102" ><Definition classe="2" Plage="Général" Text="Unknow parameters"/></Erreur>
  </ListingCodeErreur>
  <ClasseErreur>
    <Classe ID="0" ><Definition Text="Avertissement" Couleur='#145A14'/>/Classe>
    <Classe ID="1" ><Definition Text="Stop" Couleur='#145A14'/></Classe>
  </ClasseErreur>
</List>

我上了课

public class ListErreur
{
    public string ID { get; set; }
    public Definition definition;
}

public class Definition
{
    [XmlAttribute("Classe")]
    public int Classe { get; set; }

    [XmlAttribute("Plage")]
    public int Plage { get; set; }

    [XmlAttribute("Texte")]
    public int Texte { get; set; }
}

但我不知道如何创建一个接收参数中的数字并发回信息的函数

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

你可以重复使用对象(XmlDocument,XmlElement),而不是为所有东西制作新的POCO

    public Form1()
            {
                        InitializeComponent();

                        XmlElement ndError = this.getError( "1101" );
                        string strDetails = "Error: " + ndError.GetAttribute( "classe");
                        strDetails += "\r\n" + ndError.GetAttribute( "Plage" );
                        strDetails += "\r\n" + ndError.GetAttribute( "Text" );
                }

                public XmlElement getError( string strError ) {
                        XmlDocument xml = new XmlDocument();
                        xml.LoadXml(@"
<List>
<ListingCodeErreur>
<Erreur ID='1100' ><Definition classe='0' Plage='Général' Text='Parameters    inside'/></Erreur>
<Erreur ID='1101' ><Definition classe='1' Plage='Général' Text='Parameters outside'/></Erreur>
<Erreur ID='1102' ><Definition classe='2' Plage='Général' Text='Unknow parameters'/></Erreur>
</ListingCodeErreur>

<ClasseErreur>
<Classe ID='0' ><Definition Text='Avertissement' Couleur='#145A14'/></Classe>
<Classe ID='1' ><Definition Text='Stop' Couleur='#145A14'/></Classe>
</ClasseErreur>
</List>
                        ");

                        XmlElement ndReturn = (XmlElement)xml.SelectSingleNode( "//Erreur[@ID='" + strError + "']/Definition");
                        return ndReturn;
                }