C#对XML完整操作.docx

上传人:b****6 文档编号:5284014 上传时间:2022-12-14 格式:DOCX 页数:26 大小:25.83KB
下载 相关 举报
C#对XML完整操作.docx_第1页
第1页 / 共26页
C#对XML完整操作.docx_第2页
第2页 / 共26页
C#对XML完整操作.docx_第3页
第3页 / 共26页
C#对XML完整操作.docx_第4页
第4页 / 共26页
C#对XML完整操作.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

C#对XML完整操作.docx

《C#对XML完整操作.docx》由会员分享,可在线阅读,更多相关《C#对XML完整操作.docx(26页珍藏版)》请在冰豆网上搜索。

C#对XML完整操作.docx

C#对XML完整操作

C#对XML完整操作

xmlversion="1.0"?

>

类型

时间

信息

姓名

类型

时间

信息

姓名

1.XML数据格式如上,要求程序有读.写.编辑.删除操作

2.请尽可能帮忙写备注

3.xml数据读入到treeview中,分别显示各个字段,并按时间顺序排序

4.请不要复制网上代码,很多都是出现杂七杂八问题呢

5.代码请尽量简洁

6.如果好用,再加感谢分^_^

 

回答一

//假定TreeView控件的id为treeView

XmlDocumentdom=newXmlDocument();

dom.Load("aaa.xml");//装载XML文档

//遍历所有节点

intnum=0;

foreach(XmlElementbirthdayindom.DocumentElement.ChildNodes)

{

//读取数据

stringtype=birthday.SelectSingleNode("type").InnerText;

stringdate=birthday.SelectSingleNode("date").InnerText;

stringtitle=birthday.SelectSingleNode("title").InnerText;

stringname=birthday.SelectSingleNode("name").InnerText;

stringtext=name+":

"+title;//节点文字

stringimage=type;//节点图片

stringdata=num.ToString();//节点对应数据

num++;

//装载示例,将新建的节点添加到TreeView

TreeNodenode=newTreeNode(text,data,image);//createanewnode

treeView.Nodes.Add(node);

//编辑示例:

将当前节点的生日更改为当前日期

birthday.SelectSingleNode("date").InnerText=DateTime.Now.ToString();

//删除示例:

将当前节点删除

birthday.ParentNode.RemoveChild(birthday);

}

dom.Save();

 

回答二

这是以前自己做过的一个测试。

楼主可以参考一下。

=======================bookstore.XML内容====================

xmlversion="1.0"encoding="gb2312"?

>

CS从入门到精通

候捷

58.3

CS从入门到精通

候捷

58.3

=======================读取========================

XmlDocumentdoc=newXmlDocument();

doc.Load(@"d:

\bookstore.xml");

XmlElementroot=doc.DocumentElement;

MessageBox.Show(root.SelectNodes("book")[0].InnerText);

=======================添加=========================

XmlDocumentxmlDoc=newXmlDocument();

xmlDoc.Load(@"d:

\bookstore.xml");

XmlNoderoot=xmlDoc.SelectSingleNode("bookstore");//查找

XmlElementxe1=xmlDoc.CreateElement("book");//创建一个节点

xe1.SetAttribute("genre","李赞红");//设置该节点的genre属性

xe1.SetAttribute("ISBN","2-3631-4");//设置该节点的ISBN属性

XmlElementxesub1=xmlDoc.CreateElement("title");//添加一个名字为title的子节点

xesub1.InnerText="CS从入门到精通";//设置文本

xe1.AppendChild(xesub1);//把title添加到节点中

XmlElementxesub2=xmlDoc.CreateElement("author");

xesub2.InnerText="候捷";

xe1.AppendChild(xesub2);

XmlElementxesub3=xmlDoc.CreateElement("price");

xesub3.InnerText="58.3";

xe1.AppendChild(xesub3);

root.AppendChild(xe1);//把book添加到根节点中

xmlDoc.Save(@"d:

\bookstore.xml");

======================修改========================

XmlDocumentxmlDoc=newXmlDocument();

xmlDoc.Load(@"d:

\bookstore.xml");

XmlNodeListnodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点

foreach(XmlNodexninnodeList)//遍历所有名字为bookstore的子节点

{

XmlElementxe=(XmlElement)xn;//将子节点类型转换为XmlElement类型

if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红”

{

xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红”

XmlNodeListnls=xe.ChildNodes;//继续获取xe(xn)子节点的所有子节点

foreach(XmlNodexn1innls)//遍历

{

XmlElementxe2=(XmlElement)xn1;//转换类型

if(xe2.Name=="author")//如果找到

{

xe2.InnerText="亚胜";//则修改

break;//找到退出来

}

}

break;

}

}

xmlDoc.Save(@"d:

\bookstore.xml");//保存。

========================删除=========================

XmlDocumentxmlDoc=newXmlDocument();

xmlDoc.Load(@"d:

\bookstore.xml");

XmlNodeListxnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes;

foreach(XmlNodexninxnl)

{

XmlElementxe=(XmlElement)xn;

if(xe.GetAttribute("genre")=="fantasy")

{

xe.RemoveAttribute("genre");//删除genre属性

}

elseif(xe.GetAttribute("genre")=="update李赞红")

{

xe.RemoveAll();//删除该节点的全部内容

}

}

xmlDoc.Save(@"d:

\bookstore.xml");

 

回答三

方法一:

使用XML控件

<%@PageLanguage="C#"%>

读取XML方法一

Xmlid="xml1"DocumentSource="grade.xml"runat="server"/>

方法二:

使用DOM技术

<%@PageLanguage="C#"%>

<%@ImportNamespace="System.Xml"%>

<%@ImportNamespace="System.Xml.Xsl"%>

voidPage_Load(Objectsender,EventArgse)

{

XmlDocumentdoc=newXmlDocument();

doc.Load(Server.MapPath("grade.xml"));

xml1.Document=doc;

}

读取XML方法二

Xmlid="xml1"runat="server"/>

方法三:

使用DataSet对象

<%@PageLanguage="C#"%>

<%@ImportNamespace="System.Data"%>

<%@ImportNamespace="System.Data.OleDb"%>

voidPage_Load(Objectsender,EventArgse)

{

DataSetobjDataSet=newDataSet();

objDataSet.ReadXml(Server.MapPath("grade.xml"));

dgEmployees.DataSource=objDataSet.Tables["student"].DefaultView;

dgEmployees.DataBind();

}

读取XML方法三

DataGridid="dgEmployees"runat="server"/>

方法四:

按文本方式读取

<%@PageLanguage="C#"%>

<%@ImportNamespace="System.Xml"%>

privatevoidPage_Load(Objectsender,EventArgse)

{

XmlTextReaderobjXMLReader=newXmlTextReader(Server.MapPath("grade.xml"));

stringstrNodeResult="";

XmlNodeTypeobjNodeType;

while(objXMLReader.Read())

{

objNodeType=objXMLReader.NodeType;

swith(objNodeType)

{

caseXmlNodeType.XmlDeclaration:

//读取XML文件头

strNodeResult+="XMLDeclaration:

"+objXMLReader.Name+""+objXMLReader.Value+"
";

break;

caseXmlNodeType.Element:

//读取标签

strNodeResult+="Element:

"+objXMLReader.Name+"
";

break;

caseXmlNodeType.Text:

//读取值

strNodeResult+=" -Value:

"+objXMLReader.Value+"
";

break;

}

//判断该节点是否有属性

if(objXMLReader.AttributeCount>0)

{//用循环判断完所有节点

while(objXMLReader.MoveToNextAttibute)

{//取标签和值

strNodeResult+=" -Attribute:

"+objXMLReader.Name+" value:

"+objXMLReader.Value+"
";

}

}

LblFile.Text=strNodeResult;

}

}

读取XML方法四

labelid="LblFile"runat="server"/>

 

回答四

我用的是一种很笨的方法,但可以帮助初学者了解访问XML节点的过程。

 

已知有一个XML文件(bookstore.xml)如下:

 

Corets, Eva 

5.95 

1、插入节点 

往节点中插入一个节点:

 

XmlDocument xmlDoc=new XmlDocument(); 

xmlDoc.Load("bookstore.xml"); 

XmlNode root=xmlDoc.SelectSingleNode("bookstore");//查找 

XmlElement xe1=xmlDoc.CreateElement("book");//创建一个节点 

xe1.SetAttribute("genre","李赞红");//设置该节点genre属性 

xe1.SetAttribute("ISBN","2-3631-4");//设置该节点ISBN属性 

XmlElement xesub1=xmlDoc.CreateElement("title"); 

xesub1.InnerText="CS从入门到精通";//设置文本节点 

xe1.AppendChild(xesub1);//添加到节点中 

XmlElement xesub2=xmlDoc.CreateElement("author"); 

xesub2.InnerText="候捷"; 

xe1.AppendChild(xesub2); 

XmlElement xesub3=xmlDoc.CreateElement("price"); 

xesub3.InnerText="58.3"; 

xe1.AppendChild(xesub3); 

root.AppendChild(xe1);//添加到节点中 

xmlDoc.Save("bookstore.xml");  

结果为:

 

Corets, Eva 

5.95 

候捷 

58.3 

2、修改节点:

 

将genre属性值为“李赞红“的节点的genre值改为“update李赞红”,将该节点的子节点的文本修改为“亚胜”。

 

XmlNodeList nodeList=xmlDoc.SelectSingleNode("bookstore").ChildNodes;//获取bookstore节点的所有子节点 

foreach(XmlNode xn in nodeList)//遍历所有子节点 

XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型 

if(xe.GetAttribute("genre")=="李赞红")//如果genre属性值为“李赞红” 

xe.SetAttribute("genre","update李赞红");//则修改该属性为“update李赞红” 

XmlNodeList nls=xe.ChildNodes;//继续获取xe子节点的所有子节点 

foreach(XmlNode xn1 in nls)//遍历 

XmlElement xe2=(XmlElement)xn1;//转换类型 

if(xe2.Name=="author")//如果找到 

xe2.InnerText="亚胜";//则修改 

break;//找到退出来就可以了 

break; 

xmlDoc.Save("bookstore.xml");//保存。

 

最后结果为:

 

Corets, Eva 

5.95 

亚胜 

58.3 

3、删除节点  

节点的genre属性,删除 节点。

 

XmlNodeList xnl=xmlDoc.SelectSingleNode("bookstore").ChildNodes; 

foreach(XmlNode xn in xnl) 

XmlElement xe=(XmlElement)xn; 

if(xe.GetAttribute("genre")=="fantasy") 

xe.RemoveAttribute("genre");//删除genre属性 

else if(xe.GetAttribute("genre")=="update李赞红") 

xe.RemoveAll();//删除该节点的全部内容 

xmlDoc.Save("bookstore.xml");  

最后结果为:

 

Corets, Eva 

5.95 

4、显示所有数据。

 

XmlNode xn=xmlDoc.SelectSingleNode("bookstore"); 

XmlNodeList xnl=xn.ChildNodes; 

foreach(XmlNode xnf in xnl) 

XmlElement xe=(XmlElement)xnf; 

Console.WriteLine(xe.GetAttribute("genre"));//显示属性值 

Console.WriteLine(xe.GetAttribute("ISBN")); 

XmlNodeList xnf1=xe.ChildNodes; 

foreach(XmlNode xn2 in xnf1) 

Console.WriteLine(xn2.InnerText);//显示子节点点文本 

}  

loading...  

  

2005-10-3 

一个通过DataSet操作XML的类(源代码)  

using System; 

using System.Data; 

using System.Xml; 

using System.Windows.Forms; 

//*************************************** 

// 作者:

 ∮明天去要饭 

// QICQ:

 305725744 

// .Net群:

 6370988 

//  

//*************************************** 

namespace YSTRP.Common 

///  

/// OperateXmlByDataSet 的摘要说明。

 

///  

public class OperateXmlByDataSet 

public OperateXmlByDataSet() 

// 

// TODO:

 在此处添加构造函数逻辑 

// 

#region GetDataSetByXml 

///  

/// 读取xml直接返回DataSet 

///  

/// xml文件相对路径 

///  

public static DataSet GetDataSetByXml(string strXmlPath) 

try 

DataSet ds = new DataSet(); 

ds.ReadXml(GetXmlFullPath(strXmlPath)); 

if(ds.Tables.Count > 0) 

return ds; 

return null; 

catch(Exception ex) 

System.Windows.Forms.MessageBox.Show(ex.ToString()); 

return null; 

#endregion 

#region GetDataViewByXml 

///  

/// 读取Xml返回一个经排序或筛选后的DataView 

///  

///  

/// 筛选条件,如:

"name = 'kgdiwss'" 

/// 排序条件,如:

"Id desc" 

///  

public static DataView GetDataViewByXml(string strXmlPa

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 日语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1