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>的方法,
<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>的方法,
解决方案 »
- vs里面我双击按钮,我明明已经有这个按钮的事件代码了,可是它不给我跳到那里,而是重新给我开个空事件代码_click1,为什么?
- 如何用HttpWebRequest 获得这种验证码图片
- 想用C#做一个文件监控服务,作用就是如果发现文件没有启动则启动它
- 海量数据搜索问题
- 关于软件界面,想实现类似网页中的本页面切换效果
- 简单地关闭进程的程序,为何会出错?
- DateTimePicker 颜色相关的问题.看者有分
- 关于scrollbar
- 很简单的问题,请大家帮忙!!DLL中有VB.NET编的带参数的属性(property),用CSHARP不能调用这个属性???
- 类里面再实例化自己是怎么回事?
- 关于C#控制摄像头
- ListBox如何删除选中的那一项?
只是现在不知如何修改某一个结点的值,与加入一个新的Form 结点,
/// 写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);
}