大家好,有一个问题一直困扰着我,我再vinfrm程序中读取xml文件,都能正常读取成功,但如果xml节点的名称有数字开头,就会提示如   “名称不能以“1”字符(十六进制值 0x31)开头”,很郁闷,因为程序中必须要能以数字开头,请问各位大哥有解决的方法嘛?我的分数不多,希望高手不嫌弃分少 哦^_^
读取的代码如下:            XmlDocument xmlDoc;
            xmlDoc = new XmlDocument();
            xmlDoc.Normalize();
            try
            {
                xmlDoc.Load("f:\\xmlfile.xml");
                MessageBox.Show("读取成功");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }xml文件内容如下:这是能读取的,只要将节点名称前加个数字就报如上错误<aaaa id="987651" value="">
  <bbb id="12345" value="这里是值" />
</aaaa>谢谢您不吝赐教^_^

解决方案 »

  1.   

    不能以数字开头这是xml的死规定,是不能变的. 不一定非要数字开头吧,你可以为所有的名称前加个字母前缀,然后在读取后把这个前缀去掉,在保存前把这个前缀加上
      

  2.   

    xml中的特殊字符2007-06-15 16:08XML 中的特殊字符 > 和 < 这类字符是XML 标记字符,在 XML 中有特殊的含义。当在 SQL 查询(或 XPath 查询)中指定这些字符时,必须对它们进行适当的编码(也称为实体编码)。下表列出了这些特殊字符并描述了它们的含义。有关更多信息,请参见 XML 1.0 规范 中的 XML 1.0 规范。特殊字符 特殊含义 实体编码> 开始标记 &gt;< 结束标记 &lt;" 引号 &quot;' 撇号 &apos;
      

  3.   

    共性问题,期待解决[align=center]
    ****************************************************************
                看帖一定要回,分也一定要接哦 ^_^
    ****************************************************************[/align]
      

  4.   

      public   form1() 
                    { 
                            initializecomponent();                         foreach   (control   ctl   in   this.controls) 
                            { 
                                    dpresentw.add((double)ctl.width   /   (double)width); 
                                    dpresenth.add((double)ctl.height   /   (double)height); 
                                    dpresentt.add((double)ctl.top   /   (double)height); 
                                    dpresentl.add((double)ctl.left   /   (double)height); 
                            } 
                    }                 private   list <double>   dpresentw   =   new   list <double> (); 
                    private   list <double>   dpresenth   =   new   list <double> (); 
                    private   list <double>   dpresentt   =   new   list <double> (); 
                    private   list <double>   dpresentl   =   new   list <double> (); 
                    private   void   form1_resize(object   sender,   eventargs   e) 
                    { 
                            int   icount   =   controls.count; 
                            for   (int   i   =   0;   i   <   icount;   i++) 
                            { 
                                    controls[i].left   =   (int)(width   *   dpresentl[i]); 
                                    controls[i].top   =   (int)(width   *   dpresentt[i]); 
                                    controls[i].width   =   (int)(width   *   dpresentw[i]); 
                                    controls[i].height   =   (int)(height   *   dpresenth[i]); 
                            } 
                    } 
      

  5.   

    特殊字符可以考虑使用:<![CDATA[my escaped text]]>
      

  6.   

    我可以基本确定你的XML文件缺少:<?xml version="1.0" encoding="utf-8" ?>