我的读取XML方法如下: public List<CompanyInfo> ReadXML(string XMLFileName)
{
List<CompanyInfo> ComInfoList = new List<CompanyInfo>();
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(XMLFileName);
XmlNode XXX = XmlDoc.SelectSingleNode("MailInfomation");
CompanyInfo ComInfo = new CompanyInfo();
foreach (XmlNode XmlNo in XXX.ChildNodes)
{
XmlElement XmlEle=(XmlElement)XmlNo;
ComInfo.CompanyNameStr = XmlEle.GetAttribute("CompanyName");
ComInfo.NameCodeStr = XmlEle.GetAttribute("NameCode");
ComInfo.ContactStr = XmlEle.GetAttribute("Contact");
foreach (XmlNode XmlN in XmlNo.ChildNodes)
{
ComInfo.MailStr = XmlN.InnerText;
}
int a = 0;//我跟踪调试过,每次运行到这里的时候,ComInfoList中的值全部被刚刚读取到的ComInfo的
//值重写了?搞不明白为什么?
//ComInfoList.Insert(ComInfoList.Count, ComInfo);
ComInfoList.Add(ComInfo);
}
return ComInfoList;
}
结果我每次读完以后,List链表中全部存储为4个
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>也就是最后一次读到的值把前面List中存储的值全部重写了,怎么会这样呢?请大侠赐教啊!!!
我的XML档案如下:<?xml version="1.0"?>
<!--This Supply Company Mail Information XML-->
<MailInfomation>
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>
</MailInfomation>
{
List<CompanyInfo> ComInfoList = new List<CompanyInfo>();
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(XMLFileName);
XmlNode XXX = XmlDoc.SelectSingleNode("MailInfomation");
CompanyInfo ComInfo = new CompanyInfo();
foreach (XmlNode XmlNo in XXX.ChildNodes)
{
XmlElement XmlEle=(XmlElement)XmlNo;
ComInfo.CompanyNameStr = XmlEle.GetAttribute("CompanyName");
ComInfo.NameCodeStr = XmlEle.GetAttribute("NameCode");
ComInfo.ContactStr = XmlEle.GetAttribute("Contact");
foreach (XmlNode XmlN in XmlNo.ChildNodes)
{
ComInfo.MailStr = XmlN.InnerText;
}
int a = 0;//我跟踪调试过,每次运行到这里的时候,ComInfoList中的值全部被刚刚读取到的ComInfo的
//值重写了?搞不明白为什么?
//ComInfoList.Insert(ComInfoList.Count, ComInfo);
ComInfoList.Add(ComInfo);
}
return ComInfoList;
}
结果我每次读完以后,List链表中全部存储为4个
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>也就是最后一次读到的值把前面List中存储的值全部重写了,怎么会这样呢?请大侠赐教啊!!!
我的XML档案如下:<?xml version="1.0"?>
<!--This Supply Company Mail Information XML-->
<MailInfomation>
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>
<CompanyInfo CompanyName="Sina" NameCode="C723" Contact="Robert">
<Mail>[email protected]</Mail>
</CompanyInfo>
</MailInfomation>
解决方案 »
- TCP/IP编程中怎么把字节流传输改为比特流传输?
- *************用C#如何制作HTML模板*************
- 回调函数执行后Form就消失了,知道是什么原因吗.(C#调用C++的回调函数)
- 有高手知道怎么在winform里发email吗?C#的
- [求救]OdbcDataAdapter 的Update问题!!!
- 关于radiobuttonlist和checkboxlist的问题
- treeview 不无显示节点
- 继承窗体打不开
- Socket和数据库
- 小弟参考一些网络资料,做了一个下载程序,在下在地址中使用http为前缀可以,以ftp为前缀不可以,怎么办
- 求《天轰穿c#趣味编程系列视频》下载地址,万分感谢
- c#控制台应用程序
{
List<CompanyInfo> ComInfoList = new List<CompanyInfo>();
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(XMLFileName);
XmlNode XXX = XmlDoc.SelectSingleNode("MailInfomation");
foreach (XmlNode XmlNo in XXX.ChildNodes)
{
XmlElement XmlEle=(XmlElement)XmlNo;
CompanyInfo ComInfo = new CompanyInfo();
ComInfo.CompanyNameStr = XmlEle.GetAttribute("CompanyName");
ComInfo.NameCodeStr = XmlEle.GetAttribute("NameCode");
ComInfo.ContactStr = XmlEle.GetAttribute("Contact");
foreach (XmlNode XmlN in XmlNo.ChildNodes)
{
ComInfo.MailStr = XmlN.InnerText;
} //ComInfoList.Insert(ComInfoList.Count, ComInfo);
ComInfoList.Add(ComInfo);
}
return ComInfoList;
}因为你的List每次添加一个CompanyInfo对象,而你只创建了一个CompanyInfo对象,其实每次添加的都是同一个对象数据。我认为你应该在for循环中每次创建一个新的对象。
个人观点,不曾调试,你可以试用一下,哈!希望能够帮到你!