xml的简单操作

 1.写xml

using System.Xml;
 
public   void  wrietXml(DataSet ds,  string  path)
    
{
        XmlDocument xmlDoc;
        XmlNode xmlNode;
        XmlElement xmlElem;

        
//XmlElement是XmlNode,但XmlNode不能增加属性,所以一般有了XmlElement再有XmlNode

        xmlDoc 
= new XmlDocument();
        
//声明
        xmlNode = xmlDoc.CreateNode(XmlNodeType.XmlDeclaration, """");
        xmlDoc.AppendChild(xmlNode);
        
//根元素
        xmlElem = xmlDoc.CreateElement("""TableInfo""");
        xmlDoc.AppendChild(xmlElem);
        XmlNode root 
= xmlDoc.SelectSingleNode("TableInfo");
        
//root.AppendChild(xmlElem);

        
//结构:TableInfo/table/field
        for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
        
{
            XmlElement xe1 
= xmlDoc.CreateElement("field");
            
string tableName = ds.Tables[0].Rows[i]["表名"].ToString();
            
if (tableName != "")
            
{//增加table节点
                xmlElem = xmlDoc.CreateElement("table");
                xmlElem.SetAttribute(
"name", tableName);
                xmlElem.SetAttribute(
"descript""");
                root.AppendChild(xmlElem);
            }


            
//增加field节点
            string fieldName = ds.Tables[0].Rows[i]["字段名"].ToString();
            xe1.SetAttribute(
"name", fieldName);
            xe1.SetAttribute(
"descript""");
            xmlElem.AppendChild(xe1);
            
        }


        xmlDoc.Save(path);
    }

2.读xml

(1)利用dataset

protected   void  DropDownList1_SelectedIndexChanged( object  sender, EventArgs e)
    
{
        
//从xml文件中读出信息
        string file = Server.MapPath("Images"+ "/info.xml";
        DataSet ds 
= new DataSet();

        
//xml文件读到dataset中
        ds.ReadXml(file);
        DataView dv 
= new DataView(ds.Tables[1]);
        
//对dataview进行简单的查询
        dv.RowFilter = "table_Id = " + DropDownList1.SelectedItem.Value;
        DropDownList2.DataSource 
= dv;
        DropDownList2.DataTextField 
= "name";
        DropDownList2.DataValueField 
= "name";
        DropDownList2.DataBind();
        DropDownList2.Items.Insert(
0new ListItem("--请选择字段--","-1"));
    }

(2)使用xml命名空间

using  System.Xml;

private   void  button1_Click( object  sender, EventArgs e)
{
            XmlDocument doc 
= new XmlDocument();
            doc.Load(
"../../XML/Expenses1.xml");
            
//XmlNodeList elemList = doc.GetElementsByTagName("fourth");
            XmlNode foundnode = doc.SelectSingleNode("root");

            
//所有节点放在sList
            Stack sList = new Stack(); //Stack变量本来就是指针
            int xLevel = 0;
            AllNodes(foundnode, 
01ref xLevel, sList);  
}


private   int  AllNodes(XmlNode root,  int  i,  int  j,  ref   int  xLevel, Stack sList)
{//将所有节点放到队列中,并记录其信息
            
//root:树根 i:以root为根的树拥有的叶子节点数,叶子节点为0  j:表示处于树的第几层 xLevel:树的高度 sList:用来存放树中所有节点的堆栈

            
if (!root.HasChildNodes)
            
{//叶节点
                node n1;
                n1.n 
= root;
                n1.i 
= i;
                n1.j 
= j;
                sList.Push(n1);
//qList.Enqueue(n1);
                if (j > xLevel) xLevel = j;
                
return 1;
            }

            
else
            
{//非叶节点
                XmlNode x = root.LastChild;//XmlNode x = root.FirstChild;
                while (x != null)
                
{
                    i 
+= AllNodes(x, 0, j+1ref xLevel, sList);
                    x 
= x.PreviousSibling;//x = x.NextSibling;
                }


                node n2;
                n2.n 
= root;
                n2.i 
= i;
                n2.j 
= j;
                sList.Push(n2);
//qList.Enqueue(n2);
                return i;

            }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值