首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于XML 未将对象引用到实例解决方法

2012-06-06 
关于XML 未将对象引用到实例XML文件?xml version1.0 encodingutf-8 ?- typeA version1.0cha

关于XML 未将对象引用到实例
XML文件
  <?xml version="1.0" encoding="utf-8" ?> 
- <typeA version="1.0">
  <channelName>北京电视台</channelName> 
- <tvProgramTable>
- <tvProgram>
  <playTime>2009-9-29 06:02</playTime> 
- <!-- 节目播出时间
  --> 
  <meridien>早间档</meridien> 
- <!-- 时段
  --> 
  <programName>重播:国际双行线</programName> 
- <!-- 节目名称
  --> 
  <path>c:\a.wma</path> 
- <!-- 视频路径
  --> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 07:00</playTime> 
- <!-- 节目播出时间
  --> 
  <meridien>早间档</meridien> 
- <!-- 时段
  --> 
  <programName>北京您早</programName> 
- <!-- 节目名称
  --> 
  <path>C:\New Stories (Highway Blues).wma</path> 
- <!-- 视频路径
  --> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 09:02</playTime> 
- <!-- 节目播出时间
  --> 
  <meridien>早间档</meridien> 
- <!-- 时段
  --> 
  <programName>重播《红星剧场》32集剧:勇者无敌(31)</programName> 
- <!-- 节目名称
  --> 
  <path>**</path> 
- <!-- 视频路径
  --> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 09:58</playTime> 
  <meridien>早间档</meridien> 
  <programName>重播《红星剧场》32集剧:勇者无敌(32)</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 11:15</playTime> 
  <meridien>午间档</meridien> 
  <programName>重播:专题片:我爱你,中国(14)</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 11:58</playTime> 
  <meridien>午间档</meridien> 
  <programName>身边</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 12:30</playTime> 
  <meridien>午间档</meridien> 
  <programName>特别关注</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 13:05</playTime> 
  <meridien>午间档</meridien> 
  <programName>天下天天谈</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 13:40</playTime> 
  <meridien>午间档</meridien> 
  <programName>《玫瑰剧场》55集剧:闯关东中篇(21)</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 14:32</playTime> 
  <meridien>午间档</meridien> 
  <programName>《玫瑰剧场》55集剧:闯关东中篇(22)</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 15:27</playTime> 
  <meridien>下午档</meridien> 
  <programName>《玫瑰剧场》55集剧:闯关东中篇(23)</programName> 


  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 16:19</playTime> 
  <meridien>下午档</meridien> 
  <programName>《玫瑰剧场》55集剧:闯关东中篇(24)</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 17:31</playTime> 
  <meridien>下午档</meridien> 
  <programName>法治进行时</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 18:00</playTime> 
  <meridien>晚间档</meridien> 
  <programName>新闻晚高峰</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 18:30</playTime> 
  <meridien>晚间档</meridien> 
  <programName>北京新闻</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 18:56</playTime> 
  <meridien>晚间档</meridien> 
  <programName>天气预报</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 19:00</playTime> 
  <meridien>晚间档</meridien> 
  <programName>转播CCTV新闻联播</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 19:31</playTime> 
  <meridien>晚间档</meridien> 
  <programName>看气象</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 19:40</playTime> 
  <meridien>晚间档</meridien> 
  <programName>专题片:我爱你,中国(15)</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 20:22</playTime> 
  <meridien>晚间档</meridien> 
  <programName>《爸妈都是老党员》首播庆典</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 21:21</playTime> 
  <meridien>晚间档</meridien> 
  <programName>《红星剧场》38集剧:咱爸咱妈六十年(1)</programName> 
  <path>**</path> 
  </tvProgram>
- <tvProgram>
  <playTime>2009-9-29 23:25</playTime> 
  <meridien>晚间档</meridien> 
  <programName>重播文艺:花样年华歌舞大赛(5)</programName> 
  <path>**</path> 
  </tvProgram>
  </tvProgramTable>
  </typeA>


我的C#代码
  public class ChannelManager : ChannelBase
  {
  public ChannelManager()
  {
  this.fullChannel = new Dictionary<string, ChannelBase>();
  }
  /// <summary>
  /// 对象序列化结果 /// </summary>
  private SavingInfo seria = new SavingInfo();
  public SavingInfo Seria
  {
  get { return seria; }
  }
  /// <summary>
  /// 全部频道
  /// </summary>


  private Dictionary<string, ChannelBase> fullChannel;
  public Dictionary<string, ChannelBase> FullChannel
  {
  get
  {
  return fullChannel;
  }
  }
  public override void Fetch()
  {
  }

  public void LoadChannel()
  {
  this.fullChannel.Clear();
  XmlDocument myXml = new XmlDocument();
  myXml.Load("files/FullChannels.xml");
  XmlNode enginner = myXml.DocumentElement;
  int dd = enginner.ChildNodes.Count;
  TvProgram tp = new TvProgram();
  foreach (XmlNode item in enginner.ChildNodes)
  {
  this.ChannelName = item["tvChannel"].InnerText;
  }

  XmlDocument typeA = new XmlDocument();
  typeA.Load("files/北京电视台.xml");
  XmlNode xn = typeA.DocumentElement;
  foreach (XmlNode item in xn.ChildNodes)
  {
  string name=item["meridien"].InnerText; //这里报错,未将对象引用到实例
  tp.Median = name;
  }
  }
  }
}


上面的channelManager继承此类
  public abstract class ChannelBase
  {
  #region 属性

   
  /// <summary>
  /// 频道名称
  /// </summary>
  private string channelName;
  public string ChannelName
  {
  get { return channelName; }
  set { channelName = value; }
  }
  /// <summary>
  /// 频道路径
  /// </summary>
  private string path;
  public string Path
  {
  get { return path; }
  set { path = value; }
  }
  /// <summary>
  /// 节目列表
  /// </summary>
  private List<TvProgram> programList;
  public List< TvProgram> ProgramList
  {
  get { return programList; }
  set { this.programList = value; }
  }
  #endregion

  public abstract void Fetch();
   
  }

这个是我要赋值的类
  public class TvProgram
  {
  #region 属性

  /// <summary>
  /// 播出时间
  /// </summary>
  private DateTime playTime;
  public DateTime PlayTime
  {
  get { return playTime; }
  set { playTime = value; }
  }
  /// <summary>
  /// 时段
  /// </summary>
  private string median;
  public string Median
  {
  get { return median; }
  set { median = value; }
  }
  /// <summary>
  /// 名称
  /// </summary>
  private string programName;
  public string ProgramName
  {
  get { return programName; }
  set { programName = value; }
  }
  /// <summary>
  /// 文件路径
  /// </summary>
  private string filePath;


  public string FilePath
  {
  get { return filePath; }
  set { filePath = value; }
  }
  #endregion

  }



代码有点多,求高手指点,纠结了两三个小时,再不解决我要到旁边自宫去了 T_T .

[解决办法]

C# code
 foreach (XmlNode item in xn.ChildNodes)  {  string name=item["meridien"].InnerText; //这里报错,未将对象引用到实例  tp.Median = name;  }调试这段代码,item里面根本就没有meridien这个节点,你自己看看就知道,,,参考XmlDocument xmlDoc = new XmlDocument();            xmlDoc.Load("Config.xml");            XmlNodeList nodeList = xmlDoc.SelectSingleNode("setup").ChildNodes;//获取bookstore节点的所有子节点            foreach (XmlNode xn in nodeList)//遍历所有子节点            {                XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型                XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点                foreach (XmlNode xn1 in nls)//遍历                {                    XmlElement xe2 = (XmlElement)xn1;//转换类型} 

热点排行