Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过将属性转换为列表获取空列表_C#_Xml_Properties - Fatal编程技术网

C# 通过将属性转换为列表获取空列表

C# 通过将属性转换为列表获取空列表,c#,xml,properties,C#,Xml,Properties,我有以下属性类别: public class Ctas { private string _CodAgrup; public string CodAgrup { get { return _CodAgrup; } set { _CodAgrup = value; } } private string _NumCta; public strin

我有以下属性类别:

 public class Ctas
    {
        private string _CodAgrup;
        public string CodAgrup
        {
            get { return _CodAgrup; }
            set { _CodAgrup = value; }
        }
        private string _NumCta;

        public string NumCta
        {
            get { return _NumCta; }
            set { _NumCta = value; }
        }

        private string _Desc;
        public string Desc
        {
            get { return _Desc; }
            set { _Desc = value; }
        }

        private string _subctade;
        public string SubCtaDe
        {
            get { return _subctade; }
            set { _subctade = value; }
        }

        private string _Nivel;
        public string Nivel
        {
            get { return _Nivel; }
            set { _Nivel = value; }
        }
        private string _Natur;
        public string Natur
        {
            get { return _Natur; }
            set { _Natur = value; }
        }

        public override string ToString()
        {
            return "CodAgrup = " + CodAgrup + ", NumCta = " + NumCta + ", Desc = " + Desc + ", SubCtaDe = " + SubCtaDe + ", Nivel = " + Nivel + ", Natur = " + Natur;
        }
  #endregion
    }
我已经从这些属性创建了一个XML,所以首先我必须填充属性,然后我得到了下一个填充属性的方法,第一个问题是,我填充属性的方法正确吗?

//Insert n data on properties
static void cuenta(string codagroup, string numcta, string desc, string subctade, string nivel, string natur)
        {
            Ctas cuentas = new Ctas();
            int x = 0;
          while (cuentas.CodAgrup != null)
          { 
                cuentas.CodAgrup.Insert(x, "codagroup");
                cuentas.NumCta.Insert(x, "numcta");
                cuentas.Desc.Insert(x, "desc");
                cuentas.SubCtaDe.Insert(x,"subctade");
                cuentas.Nivel.Insert(x, "nivel");
                cuentas.Natur.Insert(x, "natur");
                x = x + 1;
            }
        }

//Converting propierties data into list
 List<string> coda = cuentas.CodAgrup.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> ncta = cuentas.NumCta.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> desc = cuentas.Desc.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> subdes = cuentas.SubCtaDe.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> nivel = cuentas.Nivel.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> natur = cuentas.Natur.GetType().GetProperties().Select(p => p.Name).ToList();
//Create XML from data in list´s
 for (int i = 0; i < coda.Count; i++)
                {
                    xmlWriter.WriteAttributeString("CodAgrup", coda[i]);
                    xmlWriter.WriteAttributeString("NumCta", ncta[i]);
                    xmlWriter.WriteAttributeString("Desc", desc[i]);
//write the atribute when property data exists.
                    if (cuentas.SubCtaDe != null)
                    {
                        xmlWriter.WriteAttributeString("SubCtaDe", subdes[i]);
                    }
                    xmlWriter.WriteAttributeString("Nivel", nivel[i]);
                    xmlWriter.WriteAttributeString("Natur", natur[i]);
                    xmlWriter.WriteEndElement();

                }
然后我应该检索数据并将其写入XML文件,这样我就可以将属性数据转换成一个列表,然后将它们作为一个属性写入,但当我调试时,我发现列表是空的,这是为什么?最好的方法是什么?

//Insert n data on properties
static void cuenta(string codagroup, string numcta, string desc, string subctade, string nivel, string natur)
        {
            Ctas cuentas = new Ctas();
            int x = 0;
          while (cuentas.CodAgrup != null)
          { 
                cuentas.CodAgrup.Insert(x, "codagroup");
                cuentas.NumCta.Insert(x, "numcta");
                cuentas.Desc.Insert(x, "desc");
                cuentas.SubCtaDe.Insert(x,"subctade");
                cuentas.Nivel.Insert(x, "nivel");
                cuentas.Natur.Insert(x, "natur");
                x = x + 1;
            }
        }

//Converting propierties data into list
 List<string> coda = cuentas.CodAgrup.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> ncta = cuentas.NumCta.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> desc = cuentas.Desc.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> subdes = cuentas.SubCtaDe.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> nivel = cuentas.Nivel.GetType().GetProperties().Select(p => p.Name).ToList();
                List<string> natur = cuentas.Natur.GetType().GetProperties().Select(p => p.Name).ToList();
//Create XML from data in list´s
 for (int i = 0; i < coda.Count; i++)
                {
                    xmlWriter.WriteAttributeString("CodAgrup", coda[i]);
                    xmlWriter.WriteAttributeString("NumCta", ncta[i]);
                    xmlWriter.WriteAttributeString("Desc", desc[i]);
//write the atribute when property data exists.
                    if (cuentas.SubCtaDe != null)
                    {
                        xmlWriter.WriteAttributeString("SubCtaDe", subdes[i]);
                    }
                    xmlWriter.WriteAttributeString("Nivel", nivel[i]);
                    xmlWriter.WriteAttributeString("Natur", natur[i]);
                    xmlWriter.WriteEndElement();

                }
//在属性上插入n个数据
静态无效提示(字符串codagroup、字符串numcta、字符串desc、字符串子代码、字符串nivel、字符串natur)
{
Ctas cuentas=新Ctas();
int x=0;
while(cuentas.CodAgrup!=null)
{ 
cuentas.CodAgrup.插入(x,“CodAgrup”);
cuentas.NumCta.插入(x,“NumCta”);
说明插入(x,“说明”);
cuentas.Substade.插入(x,“Substade”);
cuentas.Nivel.插入(x,“Nivel”);
插入(x,“自然”);
x=x+1;
}
}
//将属性数据转换为列表
List coda=cuentas.CodAgrup.GetType().GetProperties().Select(p=>p.Name.ToList();
List ncta=cuentas.NumCta.GetType().GetProperties().Select(p=>p.Name.ToList();
List desc=cuentas.desc.GetType().GetProperties().Select(p=>p.Name.ToList();
List subdes=cuentas.substade.GetType().GetProperties().Select(p=>p.Name.ToList();
List nivel=cuentas.nivel.GetType().GetProperties().Select(p=>p.Name.ToList();
List natur=cuentas.natur.GetType().GetProperties().Select(p=>p.Name.ToList();
//从列表中的数据创建XML
对于(int i=0;i
您的代码令人困惑,但如果我理解正确,以下是我看到的第一个错误:

  Ctas cuentas = new Ctas();
  int x = 0;
  while (cuentas.CodAgrup != null)   // cuentas.CodAgrup is null from the beginning!
  { 
        cuentas.CodAgrup.Insert(x, "codagroup");
        cuentas.NumCta.Insert(x, "numcta");
        cuentas.Desc.Insert(x, "desc");
        cuentas.SubCtaDe.Insert(x,"subctade");
        cuentas.Nivel.Insert(x, "nivel");
        cuentas.Natur.Insert(x, "natur");
        x = x + 1;
  }
由于您正在查看一个全新的
Ctas
对象,并且没有用于初始化
CodAgrup
属性的代码,因此它的默认值为
null
,因此在
循环时,代码永远不会进入

即使它这样做了,我也怀疑这将是一个无止境的循环,因为您正在
将一个文本值插入到字符串属性中,并且我看不到
cuentas.CodAgrup
将永远为空的条件


至于XML生成,为什么不使用内置的
XmlSerializer
类呢?即使您需要特定的格式,也有一些属性可以让您自定义生成的XML。

while循环中的代码永远不会执行,因为
cuentas。如果在实例化
cuentas
后不初始化它,CodAgrup
将为空。您是对的,应该没有引号,顺便说一句,我知道该怎么做了,如果输入的数据数量未知,如何填充属性?。