该例子有误,多了一个斜杠。读写xml网上例子很多,你要确认你的文件是有效的xml。
<Continent name="欧洲"/>
<Continent name="欧洲"/>
解决方案 »
- 2010下面使用OWC,是否可以实现EXCEL表格的编辑,保存至oracle数据库?
- 客户端运行水晶报表,出现登录窗口
- 用UDP做QQ的聊天信息传输该怎么写?可否完全离开数据库?
- 求一个方法,给excel文件指定的位置写数据。急求!!!!!!!十万火急
- 右键菜单出现的位置如何控制?
- 求 windows画图程序或类似的 C# 源码
- datagrid中如何获得crrentcell的值?
- 在winfrom中,我要将窗体打印出来怎么作?
- 急!!!Socket客户端异常断开后服务器怎么知道?
- 为什么win8下进度条变灰色,窗口大小发生变化
- 从DataList读出的数据 ,怎么导入到Excel表
- 多线程操作EXCEL问题求教
http://msdn.microsoft.com/zh-cn/library/system.xml.linq.xdocument(v=vs.110).aspx使用 XDocument.Load 把文件加载进来,就可以使用 LINQ to XML 来读写了。
简单快捷方便啊。
而且<Continent name="欧洲"/> 这里多了个斜杠http://blog.csdn.net/happy09li/article/details/7460521
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];
//向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;
}