实际操作xml的代码

向xml中添加一节点:

None.gif    
      XmlDocument doc  =   new  XmlDocument();
None.gif    doc.Load(MapPath(
" db\\db.xml " ));
None.gif    XmlNode node 
=  doc.CreateElement( " Item " );
None.gif     
None.gif    XmlAttribute xmlattr 
=  doc.CreateAttribute( " UserName " );
None.gif    xmlattr.Value 
=  XmlConvert.DecodeName(TextBoxUName.Text);
None.gif    node.Attributes.Append(xmlattr);
None.gif
None.gif    xmlattr 
=  doc.CreateAttribute( " UserEmail " );
None.gif    xmlattr.Value 
=  XmlConvert.DecodeName(TextBoxMail.Text);
None.gif    node.Attributes.Append(xmlattr);
None.gif
None.gif    xmlattr 
=  doc.CreateAttribute( " Content " );
None.gif    xmlattr.Value 
=  XmlConvert.DecodeName(TextBoxTxt.Text);
None.gif    node.Attributes.Append(xmlattr);
None.gif
None.gif    xmlattr 
=  doc.CreateAttribute( " SendTime " );
None.gif    xmlattr.Value 
=  XmlConvert.DecodeName(DateTime.Now.ToString());
None.gif    node.Attributes.Append(xmlattr);
None.gif
None.gif    doc.ChildNodes[
0 ].AppendChild(node);
None.gif    doc.Save(MapPath(
" db\\db.xml " ));
None.gif    Response.Redirect(
" MessageList.aspx " );


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

InBlock.gif    stream.Close();
InBlock.gif


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

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

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

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

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

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

None.gif
            childitem.AppendChild(element2);  // 把该节点绑定到节点item上去,做为item的子节点
None.gif
            
None.gif
None.gif            element.AppendChild(childitem); 
// 最后,把item节点再绑定到根结点root上去
None.gif

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

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


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


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

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

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

InBlock.gif                    
if(strISBN!="" && strISBN==ISBN) //找到该节点
ExpandedSubBlockStart.gifContractedSubBlock.gif
                    dot.gif{
InBlock.gif                        nodeFound
=element2;
InBlock.gif                        
break;
ExpandedSubBlockEnd.gif                    }

ExpandedSubBlockEnd.gif                }

ExpandedSubBlockEnd.gif            }

InBlock.gif            
return nodeFound;
ExpandedBlockEnd.gif        }


找到节点,读取或设置其子节点的值:
None.gif if (nodeFound == null )
None.gif                
return ;
None.gif
None.gif            nodelist 
=   nodeFound.ChildNodes;  // 获取所有子节点
None.gif

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

InBlock.gif                
if(node is System.Xml.XmlElement) //如果是节点
ExpandedSubBlockStart.gifContractedSubBlock.gif
                dot.gif{
InBlock.gif                    XmlElement element3 
= (XmlElement)node;
InBlock.gif                    
string sName = element3.Name;
InBlock.gif                    
string sValue = "";
InBlock.gif
InBlock.gif                    
if(sName=="title"//如果子节点是title
InBlock.gif
                        Console.Write("书名是:"+element3.InnerText); //获得该节点title的值
InBlock.gif
                    if(sName="price"//如果子节点是price
InBlock.gif
                        Console.Write("价格是:"+element3.InnerText); 
InBlock.gif
InBlock.gif
//                    //以上是读取某个值,如果想更新该书的价格或书名呢?见下:
InBlock.gif
//                    if(sName=="title")
InBlock.gif
//                        sValue="更改后的书名"; //
InBlock.gif
//                    if(sName=="price")
InBlock.gif
//                        sValue="更改后的价格";
InBlock.gif
//                    else
InBlock.gif
//                        continue;
InBlock.gif
//
InBlock.gif
//                    element3.InnerText=sValue;//或者代码也可以像下面一样:
InBlock.gif
//
InBlock.gif
//                    XmlText nodetext = doc.CreateTextNode(sValue);
InBlock.gif
//                    element3.ReplaceChild(nodetext,element3.FirstChild);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值