ASP.NET 操作XML文件

 ------------------------------------------------第一种简单的操作-----------------------------------------------------------------
xml文件格式如下: 
<?xml version="1.0" encoding="utf-8"?> 
<userdata createuser="false"> 
<dataconnection> 
<server>localhost</server> 
<uid>sa</uid> 
<pwd></pwd> 
</dataconnection> 
<net> 
<name>jiayuan</name> 
</net> 
</userdata> 
读取节点中的一个属性 
XmlDocument doc=new XmlDocument(); 
doc.Load("config.xml");//可以再加入路径:如D:/config.xml 
XmlNode xnuser=doc.SelectSingleNode("userdata"); 
string flag=xnuser.Attributes["createuser"].InnerText; 
读取节点中的值 
XmlDocument doc=new XmlDocument(); 
doc.Load("config.xml"); 
XmlNode xnserver = doc.SelectSingleNode("userdata/dataconnection/server"); 
修改节点的属性 
XmlDocument doc=new XmlDocument(); 
doc.Load("config.xml");  字串2
XmlNode xnuser=doc.SelectSingleNode("userdata"); 
xnuser.Attributes["createuser"].InnerText="false"; 
doc.Save("config.xml"); 
追加节点 
XmlDocument doc = new XmlDocument(); 
XmlTextReader reader = new XmlTextReader("config.xml"); 
doc.Load("config.xml"); 
XmlElement root = doc.DocumentElement; // 获取根节点 
XmlElement tagMessage = doc.CreateElement("net"); 
XmlElement tagText = doc.CreateElement("name"); 
tagText.InnerText = netname; 
tagMessage.AppendChild(tagText); // 追加到 xml 文本的最后面 
root.AppendChild(tagMessage); 
reader.Close(); // 关闭 XmlTextReader 
doc.Save("config.xml"); // 保存 xml 文件 


------------------------------------------------------------第二种复杂点------------------------------------------------------------------

在开始之前,先建立一个smallfools.xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<smallfoolsRoot>
  <poems>
    <author>王维</author>
    <title>竹里馆</title>
    <content>独坐幽篁里,弹琴复长啸。深林人不知,明月来相照。</content>
  </poems>
  <poems>
    <author>孟浩然</author>
    <title>宿建德江</title>
    <content>移舟泊烟渚,日暮客愁新。野旷天低树,江清月近人</content>
  </poems>
  <poems>
    <author>李白</author>
    <title>杜陵绝句</title>
    <content>南登杜陵上,北望五陵间。秋水明落日,流光灭远山</content>
  </poems>
  <poems>
    <author>李白</author>
    <title>望庐山瀑布</title>
    <content>日照香炉生紫烟,遥看瀑布挂前川。飞流直下三千尺,疑是银河落九天。</content>
  </poems>
  <poems>
    <author>李商隐</author>
    <title>锦瑟</title>
    <content>锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。</content>
  </poems>
</smallfoolsRoot>

    下面的操作都在这个xml文件里进行。

操作一:读取整个XML文件,并在DataGrid里显示出来:
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("smallfools.xml"));
if (ds.Tables.Count>0)
{
this.DataGrid1.DataSource = ds.Tables[0].DefaultView;
this.DataGrid1.DataBind();
}

操作二:获得第一个节点的值

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("smallfools.xml"));
XmlNode xmlNode = xmlDoc.DocumentElement.FirstChild;
if (xmlNode!=null)
{
this.tbauthor.Text = xmlNode["author"].InnerText;
this.tbtitle.Text = xmlNode["title"].InnerText;
this.tbcontent.Text = xmlNode["content"].InnerText;
ViewState["Count"] = 0;
}

操作三:查看某一个节点的内容
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("smallfools.xml"));
XmlNodeList xmlNodeList = xmlDoc.DocumentElement.ChildNodes;
XmlNode xmlNode = xmlNodeList.Item(0);
this.tbauthor.Text = xmlNode["author"].InnerText;
this.tbtitle.Text = xmlNode["title"].InnerText;
this.tbcontent.Text = xmlNode["content"].InnerText;

操作四:添加一个节点
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("smallfools.xml"));
//创建一个新节点
XmlElement newElement = xmlDoc.CreateElement("poems");
//创建newElement下的节点
XmlElement elauthor = xmlDoc.CreateElement("author");
XmlElement eltitle = xmlDoc.CreateElement("title");
XmlElement elcontent = xmlDoc.CreateElement("content");
elauthor.InnerText = this.tbaddauthor.Text.Trim();
eltitle.InnerText = this.tbaddtitle.Text.Trim();
elcontent.InnerText = this.tbaddcontent.Text.Trim();
//将newElement下的节点加到newElement上
newElement.AppendChild(elauthor);
newElement.AppendChild(eltitle);
newElement.AppendChild(elcontent);
//将newElement加入到xml文件中(加在最后一条记录上)
xmlDoc.DocumentElement.AppendChild(newElement);
//如果要插到某条记录之后也可以用(加在第一条记录之后)
//xmlDoc.DocumentElement.InsertAfter(newElement,xmlDoc.DocumentElement.ChildNodes.Item(0));
//如果要插到某条记录之前也可以用(加在第一条记录之前)
//xmlDoc.DocumentElement.InsertBefore(newElement,xmlDoc.DocumentElement.ChildNodes.Item(0));
//存盘
xmlDoc.Save(Server.MapPath("smallfools.xml"));

操作五:删除某个节点
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("smallfools.xml"));
XmlNode xmlNode = xmlDoc.DocumentElement.ChildNodes.Item(0);
xmlNode.ParentNode.RemoveChild(xmlNode);
xmlDoc.Save(Server.MapPath("smallfools.xml"));

操作六:编辑某个节点
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("smallfools.xml"));
//获得节点列表
XmlNode xmlNode = xmlDoc.DocumentElement.ChildNodes.Item(1);
xmlNode["author"].InnerText = this.tbauthor.Text;
xmlNode["title"].InnerText = this.tbtitle.Text;
xmlNode["content"].InnerText = this.tbcontent.Text;
xmlDoc.Save(Server.MapPath("smallfools.xml"));

操作七:查找记录
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("smallfools.xml"));
XmlNodeList nodelist = xmlDoc.SelectNodes("smallfoolsRoot/poems[author='"+this.tbsearch.Text.Trim()+"']");

操作八:糊模查找记录
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("smallfools.xml"));
XmlNodeList nodelist = xmlDoc.SelectNodes("smallfoolsRoot/poems[contains(author,'"+this.tbsearch.Text.Trim()+"')]");


------------------------------------------------三,操作XML的类 ---------------------------------------------

using System;
using System.IO;
using System.Data;
using System.Xml;
using System.Xml.XPath;

namespace ExecuteXml
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
public class XmlControl
{
protected string strXmlFile;
protected XmlDocument objXmlDoc = new XmlDocument();

public XmlControl(string XmlFile)
{
//
// TODO: 在這裡加入建構函式的程式碼
//
try
{
objXmlDoc.Load(XmlFile);
}
catch (System.Exception ex)
{
throw ex;
}
strXmlFile = XmlFile;
}

public DataView GetData(string XmlPathNode)
{
//查找數據。返回一個DataView
DataSet ds = new DataSet();
StringReader read = new StringReader(objXmlDoc.SelectSingleNode(XmlPathNode).OuterXml);
ds.ReadXml(read);
return ds.Tables[0].DefaultView;
}

public void Replace(string XmlPathNode,string Content)
{
//更新節點內容。
objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
}

public void Delete(string Node)
{
//刪除一個節點。
string mainNode = Node.Substring(0,Node.LastIndexOf("/"));
objXmlDoc.SelectSingleNode(mainNode).RemoveChild(objXmlDoc.SelectSingleNode(Node));
}

public void InsertNode(string MainNode,string ChildNode,string Element,string Content)
{
//插入一節點和此節點的一子節點。
XmlNode objRootNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
objRootNode.AppendChild(objChildNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objChildNode.AppendChild(objElement);
}

public void InsertElement(string MainNode,string Element,string Attrib,string AttribContent,string Content)
{
//插入一個節點,帶一屬性。
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.SetAttribute(Attrib,AttribContent);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
}

public void InsertElement(string MainNode,string Element,string Content)
{
//插入一個節點,不帶屬性。
XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
XmlElement objElement = objXmlDoc.CreateElement(Element);
objElement.InnerText = Content;
objNode.AppendChild(objElement);
}

public void Save()
{
//保存文檔。
try
{
objXmlDoc.Save(strXmlFile);
}
catch (System.Exception ex)
{
throw ex;
}
objXmlDoc = null;
}
}
}

------------------------------------------四,生成和写入XML ----------------------------------------------

第一种:
sqlserver2000支持生成xml  
  sqlconnection   sqlconn= new   sqlconnection("server=myserver;uid=sa;pwd=;database=mydatabase;")  
  sqlcommand   sqlcmd=new   sqlcommand("select   *   from   authors   for   xml   auto,xmldata",sqlconn)  
  sqlconn.open()  
  XmlTextReader   xmlreader=sqlcmd.ExecuteXmlReader();  
  DataSet   ds=ne   DataSet();  
  ds.ReadXml(xmlreader,XmlReadMode.Fragment);  
  ds.WriteXml("resultxml.xml");  
   
   
  另外:  
  dataset也能将数据导出为xml和xml   schema。  
  sqldataadapter   sqladp=new   sqldataadapter("select   *   from   authors",sqlconn)  
  dataset   ds   =new   dataset;  
  sqladp.fill(ds,"authors")  
  string   strxmldata=ds.GetXml();  
  string   strxmlschema=ds.GetXmlSchema(); 

第二种:

XmlDataDocument   xmldoc=new   XmlDataDocument();  
  xmldoc.DataSet.ReadXml(Server.MapPath("test.xml"));  
  DataTable   dt=xmldoc.DataSet.Tables[0];  
   
  //对dt做相应操作,添加、删除、修改……  
   
  xmldoc.Save(Server.MapPath("Expert_xml.xml"));

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值