xml文件格式是:<?xml version="1.0" encoding="utf-8"?>
<Forms>
<Form>
<FormName>frmZhiWei</FormName>
<FrozenColumnCount>3</FrozenColumnCount>
</Form>
          <Form>
<FormName>frmStaff</FormName>
<FrozenColumnCount>4</FrozenColumnCount>
</Form></Forms>读xml的方法是:string str = "";
string fileName = @"../../Resource/FrozenColumn.xml";
if(System.IO.File.Exists(fileName)==false)
{
MessageBox.Show("未能找到xml文件,请与管理员联系。","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
return;
}
XmlDocument doc = new  XmlDocument();
try
{
doc.LoadXml(fileName);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
XmlElement root=doc.DocumentElement;
XmlNodeList n_list=  root.ChildNodes;
for(int i=0;i<n_list.Count;i++)
{
XmlNode element = n_list.Item(i);
str +=element.InnerText +"-"+element.Value +"-"+element.Attributes["FrozenColumnCount"].ToString();
}
MessageBox.Show(str);问题:
我原本是想据"FormName"的值来读取"FrozenColumnCount"的数据,
但是,现在执行到Catch一步了,说xml文件格式错误,1行难道这个xml文件有定义错吗?另外,想征求一下写一个<Form>的方法,

解决方案 »

  1.   

    我现在改成DataSet来读了,结果可以读出来,
    只是现在不知如何修改某一个结点的值,与加入一个新的Form 结点,
      

  2.   

    已经实现了,把例子给大家,方便以后相关人员查找/// <summary>
    /// 写xml文件
    /// </summary>
    /// <returns></returns>
    public static void WriteXml(string pName,string fName,string frozenCount)
    {
    XmlDocument doc = new XmlDocument();
    doc.Load(pName); XmlNode root = doc.DocumentElement;
    XmlNode fNode = doc.CreateElement("Form");
    XmlNode fnNode = doc.CreateElement("FormName");
    fnNode.InnerText = fName;
    XmlNode fcNode = doc.CreateElement("FrozenColumnCount");
    fcNode.InnerText = frozenCount; fNode.AppendChild(fnNode);
    fNode.AppendChild(fcNode);
    root.AppendChild(fNode); doc.Save(pName);
    }
    /// <summary>
    /// 修改xml
    /// </summary>
    /// <param name="formName"></param>
    /// <param name="frozenCount"></param>
    /// <returns></returns>
    public static void UpdateXml(string pName,string fName,string frozenCount)
    {
    bool flag = false;
    XmlDocument doc = new XmlDocument();
    doc.Load(pName);
    XmlNodeList nodeList = doc.SelectSingleNode("Forms").ChildNodes;
    foreach(XmlNode node in nodeList)
    {
    XmlElement e  = (XmlElement)node;
    XmlNodeList nList = e.ChildNodes;
    string formName = "";
    foreach(XmlNode cnode in nList)
    {
    XmlElement ce = (XmlElement)cnode;
    if(ce.Name == "FormName")
    formName = ce.InnerText;
    if(ce.Name== "FrozenColumnCount" && formName == fName)
    {
    ce.InnerText = frozenCount;
    flag = true;
    break;
    }
    }
    if(flag)
    break;
    }
    doc.Save(pName);
    }
      

  3.   

    看看这篇文章,Xml问题基本都能搞定...http://www.blogcn.com/user63/rhfan2005/blog/25161802.html