该例子有误,多了一个斜杠。读写xml网上例子很多,你要确认你的文件是有效的xml。
<Continent name="欧洲"/>

解决方案 »

  1.   

    2种吧。一种是Dom方式,一种是流方式(xmlreader,xmlwriter)。
      

  2.   

    如果是 .Net 4.0 以上,建议使用 XDocument 类
    http://msdn.microsoft.com/zh-cn/library/system.xml.linq.xdocument(v=vs.110).aspx使用 XDocument.Load 把文件加载进来,就可以使用 LINQ to XML 来读写了。
    简单快捷方便啊。
      

  3.   

    使用 XDocument 类  你的XML文件的节点一定要看清楚是否有错误.
      

  4.   

    http://blog.csdn.net/duanzi_peng/article/details/24018431
      

  5.   

    你的编码格式错了,把编码格式改下,
    而且<Continent name="欧洲"/> 这里多了个斜杠http://blog.csdn.net/happy09li/article/details/7460521
      

  6.   

         DataSet ds = new DataSet();
                ds.ReadXml("test.xml");
                string s = ds.Tables[0].Rows[0][1].ToString();//亚洲
                string s1 = ds.Tables[0].Rows[1][1].ToString();//欧洲
                string s2 = ds.Tables[0].Rows[2][1].ToString();//非洲
                string ss = ds.Tables[1].Rows[0][0].ToString();//中国
                string ss1 = ds.Tables[1].Rows[1][0].ToString();//日本
                string ss2 = ds.Tables[1].Rows[2][0].ToString();//法国
                dataGridView1.DataSource = ds.Tables[0]; 
      

  7.   

    读写XML文件数据
    //向XML写入数据
    public int AddTitle(string name,string body,int userID,int boardID,byte state)
    {
    XmlParamter[] param = {
    XmlDatabase.CreateInsertParameter("Name",name),
    XmlDatabase.CreateInsertParameter("Body",body),
    XmlDatabase.CreateInsertParameter("UserID",userID.ToString()),
    XmlDatabase.CreateInsertParameter("BoardID",boardID.ToString()),
    XmlDatabase.CreateInsertParameter("CreateDate",DateTime.Now.ToShortDateString()),
    XmlDatabase.CreateInsertParameter("VisitNum","0"),
    XmlDatabase.CreateInsertParameter("ReplyNum","0"),
    //调用公共类中的AddXmlData向XML数据库中添加数据 XmlDatabase.CreateInsertParameter("State",state.ToString())
    };
    return (XmlDatabase.AddXmlData(XmlBBS.TitleFilePath,TitleTableName,param));
    }
    //保存添加的数据
    public static int AddXmlData(string path,string tableName,params XmlParamter[] param)
    {
                //创建XmlDocument类的实例
                XmlDocument xmldoc = new XmlDocument();
                //调用XmlDocument类中的Load()方法加载XML文件
                xmldoc.Load(path);
    ///选择根节点
                XmlNode node = xmldoc.SelectSingleNode("/" + tableName + "s");
    if(node == null) return -1;
                
    ///创建新记录的ID值
                int newID;
                if (node.LastChild == null)
                {
                    newID = 1;  
                }
                else
                {
                    newID = DataTypeConvert.ConvertToInt(node.LastChild.Attributes["ID"].Value) + 1;
                }
    if(newID < 1) return -1;
    ///创建一个新节点
                XmlNode newNode = xmldoc.CreateNode(XmlNodeType.Element, tableName, null);
    if(newNode == null)return -1;
    ///添加ID的值
                newNode.Attributes.Append(CreateNodeAttribute(xmldoc, "ID", newID.ToString()));
    ///添加新节点的属性
    foreach(XmlParamter p in param)
    {
                    newNode.Attributes.Append(CreateNodeAttribute(xmldoc, p.Name, p.Value));
    }
    ///将新节点追加到根节点中
    node.AppendChild(newNode);
                //保存XML文档
                xmldoc.Save(path);
    return newID;
    }
    //读取XML中的数据
      //调用公共类中的GetData方法,读取XML文件中的数据
    private object GetData(DataTable dt,string sColumnName,string dColumnName,string sValue)
    {
    DataRow[] rows = dt.Select(sColumnName + "='" + sValue + "'");
    if(rows.Length <= 0) return null;
    return rows[0][dColumnName];
    }
    //检索数据节点读取内存数据
    public static DataTable GetData(string path,string tableName,params XmlParamter[] param)
    {
    //创建XmlDocument类的实例
                XmlDocument xmldoc = new XmlDocument();
                //调用XmlDocument类中的Load()方法加载XML文件
                xmldoc.Load(path);
                //创建DataTable类型的变量dt
    DataTable dt = new DataTable();
    ///获取根节点
                XmlNode rootNode = xmldoc.SelectSingleNode("/" + tableName + "s");
                //判断节点及其子节点是否为空,为空将返空值
    if(rootNode == null) return null;
    if(rootNode.ChildNodes.Count == 0) return null;
    ///创建保存记录的数据列
    foreach(XmlAttribute attr in rootNode.ChildNodes[0].Attributes)
    {
    dt.Columns.Add(new DataColumn(attr.Name,typeof(string)));
    }
    ///创建获取数据节点的XPath
    string xmlPath = "/" + tableName + "s/" + tableName;
    int operationCount = 0;
    StringBuilder operation = new StringBuilder();
    foreach(XmlParamter p in param)
    {
    if(p.Direction == ParameterDirection.Insert
    || p.Direction == ParameterDirection.Update)
    {
    continue;
    }
    ///创建条件表达式
    switch(p.Direction)
    {
    case ParameterDirection.Equal:
    operation.Append("@" + p.Name + "='" + p.Value + "'");
    break;
    case ParameterDirection.NotEqual:
    operation.Append("@" + p.Name + "<>'" + p.Value + "'");
    break;
    case ParameterDirection.Little:
    operation.Append("@" + p.Name + "<'" + p.Value + "'");
    break;
    case ParameterDirection.Great:
    operation.Append("@" + p.Name + ">'" + p.Value + "'");
    break;
    case ParameterDirection.Like:
    operation.Append("contains(@" + p.Name + ",'" + p.Value + "')");
    break;
    default: break;
    }
    operationCount++;
    operation.Append(" and ");
    }
    if(operationCount > 0)
    {   ///修正XPath
    operation.Remove(operation.Length - 5,5);
    xmlPath += "[" + operation.ToString() + "]";
    }
                //获取XML节点下的所有节点
                XmlNodeList nodeList = xmldoc.SelectNodes(xmlPath);
    ///遍历所有节点,并添加节点的数据
    foreach(XmlNode node in nodeList)
    {
    DataRow row = dt.NewRow();
    foreach(DataColumn column in dt.Columns)
    {   ///读取每一个属性
    row[column.ColumnName] = node.Attributes[column.ColumnName].Value;
    }//CodeGo.net/
    dt.Rows.Add(row);
    }
    return dt;
    }