实际操作xml的代码

向xml中添加一节点:

    
      XmlDocument doc  =   new  XmlDocument();
    doc.Load(MapPath(
" db\\db.xml " ));
    XmlNode node 
=  doc.CreateElement( " Item " );
     
    XmlAttribute xmlattr 
=  doc.CreateAttribute( " UserName " );
    xmlattr.Value 
=  XmlConvert.DecodeName(TextBoxUName.Text);
    node.Attributes.Append(xmlattr);

    xmlattr 
=  doc.CreateAttribute( " UserEmail " );
    xmlattr.Value 
=  XmlConvert.DecodeName(TextBoxMail.Text);
    node.Attributes.Append(xmlattr);

    xmlattr 
=  doc.CreateAttribute( " Content " );
    xmlattr.Value 
=  XmlConvert.DecodeName(TextBoxTxt.Text);
    node.Attributes.Append(xmlattr);

    xmlattr 
=  doc.CreateAttribute( " SendTime " );
    xmlattr.Value 
=  XmlConvert.DecodeName(DateTime.Now.ToString());
    node.Attributes.Append(xmlattr);

    doc.ChildNodes[
0 ].AppendChild(node);
    doc.Save(MapPath(
" db\\db.xml " ));
    Response.Redirect(
" MessageList.aspx " );


提取xml显示到DataGrid中:
 FileStream stream  =   new  FileStream(Server.MapPath( " db\\db.xml " ),FileMode.Open);
   
try
   
{
    XmlDataDocument doc 
= new XmlDataDocument();
    doc.DataSet.ReadXml(
new StreamReader(stream));
    
if(doc.DataSet.Tables.Count != 0 && doc.DataSet.Tables[0].Rows.Count!=0)
    
{
     DataList1.DataSource 
= doc.DataSet.Tables[0].DefaultView ;
     DataList1.DataBind();
    }

    stream.Close();


创建一个xml文档并保存:
            XmlDocument doc = new XmlDocument();             

              XmlDeclaration dec  =  doc.CreateXmlDeclaration( " 1.0 " , "" , " yes " );  // 创建xml描述
            doc.PrependChild(dec);  // 将指定节点添加到该节点的头列表

            XmlElement element 
=  doc.CreateElement( " ROOT " ); 
            doc.AppendChild(element); 
// 增加根结点root

            XmlElement childitem 
=  doc.CreateElement( " Item " );  // 创建一个节点Item
            
            XmlAttribute attr
= doc.CreateAttribute( " UserName " );  // 创建一个属性UserName
            attr.Value = " Shipfi " // UserName属性的值是Shipfi

            childitem.Attributes.Append(attr); 
// 把该属性绑定到节点item上去

            XmlElement element2
=  doc.CreateElement( " ASPX " );  // 创建另一个节点ASPX
            element2.InnerText = " browse.aspx " // 该节点的内容是browse.aspx,这一句可以改为:  XmlText nodeText = doc.CreateTextNode("browse.aspx"); 如果用xmlText使用的话,则需要在后面代码中加入: element2.AppendChild(nodeText); 把值加进节点中去.

            childitem.AppendChild(element2);  // 把该节点绑定到节点item上去,做为item的子节点
            

            element.AppendChild(childitem); 
// 最后,把item节点再绑定到根结点root上去

            doc.Save(
@" D:\XF\XMLTest\db.xml " );  // 存档

//由此可以看出:无论在xml创建属性,根节点,子节点,内容,都需要用到XmlDocument对象的实例。由它来分配创建,创建完后,再加到各个相应的节点实例上去。


查找某个节点:
有xml如下:
< bookstore >
  
< book  genre ='novel'  ISBN ='10-861003-324'>
    
<title > The Handmaid's Tale </ title >
    
< price > 19.95 </ price >
  
</ book >
  
< book  genre ='novel'  ISBN ='1-861001-57-5'>
    
<title > Pride And Prejudice </ title >
    
< price > 24.95 </ price >
  
</ book >
</ bookstore >


想找到ISBN为'10-861003-324'的那本书的情况怎么办呢?代码如下:
protected  XmlElement fildElement(XmlDocument doc, string  ISBN)
        
{
            XmlElement nodeFound 
= null;
            XmlElement root 
= doc.DocumentElement; //获取文档的根

            XmlNodeList nodelist 
= root.GetElementsByTagName("book");

            
//我的理解:以上两句代码,也可以用 XmlNodeList nodelist = doc.GetElementsByTagName("book");来使用,只要doc是作为XmlDocument对象的实例。

            
foreach(XmlNode node in nodelist)
            
{
                
if(node is System.Xml.XmlElement)
                
{
                    XmlElement element2 
= (XmlElement)node;
                    
string strISBN = element2.GetAttribute("ISBN"); //找出节点相应的属性值

                    
if(strISBN!="" && strISBN==ISBN) //找到该节点
                    {
                        nodeFound
=element2;
                        
break;
                    }

                }

            }

            
return nodeFound;
        }


找到节点,读取或设置其子节点的值:
if (nodeFound == null )
                
return ;

            nodelist 
=   nodeFound.ChildNodes;  // 获取所有子节点

            
for ( int  i = 0 ;i < nodelist.Count;i ++ )
            
{
                XmlNode node 
= nodelist.Item(i); //取出每个子节点

                
if(node is System.Xml.XmlElement) //如果是节点
                {
                    XmlElement element3 
= (XmlElement)node;
                    
string sName = element3.Name;
                    
string sValue = "";

                    
if(sName=="title"//如果子节点是title
                        Console.Write("书名是:"+element3.InnerText); //获得该节点title的值
                    if(sName="price"//如果子节点是price
                        Console.Write("价格是:"+element3.InnerText); 

//                    //以上是读取某个值,如果想更新该书的价格或书名呢?见下:
//                    if(sName=="title")
//                        sValue="更改后的书名"; //
//                    if(sName=="price")
//                        sValue="更改后的价格";
//                    else
//                        continue;
//
//                    element3.InnerText=sValue;//或者代码也可以像下面一样:
//
//                    XmlText nodetext = doc.CreateTextNode(sValue);
//                    element3.ReplaceChild(nodetext,element3.FirstChild);

你可能感兴趣的:(xml)