<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<手机信息>
  <手机>
    <品牌 型号="dd">dd</品牌>
    <部分技术参数>
      <手机类型>翻盖</手机类型>
      <兼容网络制式>
        <网络制式>GSM 900</网络制式>
        <网络制式>GSM 1800</网络制式>
      </兼容网络制式>
      <体积>
        <长>1mm</长>
        <宽>1mm</宽>
        <厚>1mm</厚>
      </体积>
      <重量>1克</重量>
    </部分技术参数>
    <售价>1.00元</售价>
  </手机>
</手机信息>其中的网络制式,我用checkboxlist 去判断是否存在,在checkboxlist的items事先放置四个值
部分代码
nodelist = doc.GetElementsByTagName("手机"); 
.....
(第72行)  while(node.NextSibling.FirstChild!=null)
{
                    for (int i = 0; i < 3; i++)
                    {
                        if (cblNetwork.Items[i].Value == node.NextSibling .FirstChild .InnerText )
                        {
                            cblNetwork.Items[i].Selected = true;
                            node = node.NextSibling.FirstChild;
                        }
                    }
}
出现的错误
System.NullReferenceException: 未将对象引用设置到对象的实例。 在 WebApplication1.WebForm1.LoadRecord(Int32 index) 位置 e:\小来工作室\WebApplication1\WebForm1.aspx.cs:行号 72

解决方案 »

  1.   

    (第72行) while(node.NextSibling.FirstChild!=null) 《《《
    node = node.NextSibling.FirstChild; 《《《这两行有问题
    经过一次循环后,你这个node已经是<网络制式>GSM 900</网络制式>这个节点了再也没有node.NextSibling了,所以出错,修改一下循环方式,比如
    node = nodelist[0].SelectSingleNode("部分技术参数/兼容网络制式")
    foreach (Node n in node.Childs)  <<<这里记不清了,自己去查一下
    {
    }
      

  2.   

    楼上正解,NextSibling在每次循环中只能调用一次,感觉他就像READ一样,向下动了指针