实际操作xml的代码

博客主要提及向XML中添加一个节点的操作,聚焦于信息技术领域中XML数据处理方面的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

向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.gifprotected 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.gifif(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);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值