c#中XML文件的读写操作

XML文件内容如下:

 

<? xml version = " 1.0 "  encoding = " utf-8 " ?>
< keys >
  
< key >
    
< keyname > 2 </ keyname >
    
< musicsource > CD </ musicsource >
    
< musicaddr > 2 </ musicaddr >
    
< playway > 播放 </ playway >
  
</ key >
  
< key >
    
< keyname > 5 </ keyname >
    
< musicsource > MP3 </ musicsource >
    
< musicaddr > 7 </ musicaddr >
    
< playway > 停止 </ playway >
  
</ key >
  
< key >
    
< keyname > 3 </ keyname >
    
< musicsource > MP3 </ musicsource >
    
< musicaddr > 8 </ musicaddr >
    
< playway > 播放 </ playway >
  
</ key >
  
< key >
    
< keyname > 1 </ keyname >
    
< musicsource > MP3 </ musicsource >
    
< musicaddr > 1 </ musicaddr >
    
< playway > 连续播放 </ playway >
  
</ key >
  
< key >
    
< keyname > 4 </ keyname >
    
< musicsource > 调谐器 </ musicsource >
    
< musicaddr > 1 </ musicaddr >
    
< playway > 循环单曲 </ playway >
  
</ key >
</ keys >

 

将XML节点读到LISTVIE上:

 

private   void  int_6243()                                                     
        
{
            
this.list_6243.Items.Clear();
            
try
            
{
                XmlDocument MyXMLDoc 
= new XmlDocument();
                MyXMLDoc.Load(Application .StartupPath  
+ "/XML_6243.xml");               

                XmlNodeList MyNodes 
= MyXMLDoc.GetElementsByTagName("keyname");
                
foreach (XmlNode MyNode in MyNodes)
                
{
                    
string[] subItem ={ MyNode.InnerText, """""" };
                    
this.list_6243.Items.Add(new ListViewItem(subItem));
                    
                }

               
// this.list_6243.Sorting = SortOrder.Ascending;
                MyNodes = MyXMLDoc.GetElementsByTagName("musicsource");
                
int i = 0;
                
foreach (XmlNode MyNode in MyNodes)
                
{
                    
this.list_6243.Items[i++].SubItems[1].Text = MyNode.InnerText;
                }

                MyNodes 
= MyXMLDoc.GetElementsByTagName("musicaddr");
                i 
= 0;
                
foreach (XmlNode MyNode in MyNodes)
                
{
                    
this.list_6243.Items[i++].SubItems[3].Text = MyNode.InnerText;
                }

                MyNodes 
= MyXMLDoc.GetElementsByTagName("playway");
                i 
= 0;
                
foreach (XmlNode MyNode in MyNodes)
                
{
                    
this.list_6243.Items[i++].SubItems[2].Text = MyNode.InnerText;
                }

                
                
            }

            
catch (Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }

            
        }

 

添加新节点到XML:

 

  private   void  btn6243_Click( object  sender, EventArgs e)
        
{
            
if (this.numAddr.Value != 0 && this.comMusic.Text != "" && this.numKey.Value != 0 && this.comPlayWay.Text != "")
            
{
                XmlDocument MyXMLDoc 
= new XmlDocument();
                MyXMLDoc.Load(Application .StartupPath  
+ "/XML_6243.xml");
                
try
                
{
                    
string myfind = this.numKey.Value.ToString();
                    
string myfindstring = "keys/key [keyname=" + '"' + myfind + '"' + "]";
                    XmlNode MyNode 
= MyXMLDoc.SelectSingleNode(myfindstring);
                    
if (MyNode != null)
                    
{
                        MyXMLDoc.DocumentElement.RemoveChild(MyNode);
//检查节点是否已经存在,存在的话则删除
                       
                    }


                    XmlElement MyNewKey 
= MyXMLDoc.CreateElement("key");//新建节点

                    XmlElement MyKeyName 
= MyXMLDoc.CreateElement("keyname");//键码
                    MyKeyName.InnerText = this.numKey.Value.ToString();
                    MyNewKey.AppendChild(MyKeyName);

                    XmlElement MyMusicSource 
= MyXMLDoc.CreateElement("musicsource");//音源
                    MyMusicSource.InnerText = this.comMusic.Text;
                    MyNewKey.AppendChild(MyMusicSource);

                    XmlElement MyPlayWay 
= MyXMLDoc.CreateElement("musicaddr");//音源地址
                    MyPlayWay.InnerText = this.numAddr.Value.ToString();
                    MyNewKey.AppendChild(MyPlayWay);

                    XmlElement MyMusicAddr 
= MyXMLDoc.CreateElement("playway");//播放方式
                    MyMusicAddr.InnerText = this.comPlayWay.Text;
                    MyNewKey.AppendChild(MyMusicAddr);

                    MyXMLDoc.DocumentElement.AppendChild(MyNewKey);

                    
//插入节点
                    XmlTextWriter MyWriter = new XmlTextWriter(Application .StartupPath  + "/XML_6243.xml"null);
                    MyWriter.Formatting 
= Formatting.Indented;
                    MyXMLDoc.WriteContentTo(MyWriter);
                    MyWriter.Close();
                }

                
catch (Exception ex)
                
{
                    MessageBox.Show(ex.Message);
                }

                
this.int_6243();
            }

            
else
                MessageBox.Show(
"信息没有填写完整,请检查!""提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

 

删除XML节点:

 

void  menu_Click( object  sender, EventArgs e)
        
{
            
//throw new Exception("The method or operation is not implemented.");
            try
            
{
                
string strvalue = this.list_6243.SelectedItems[0].SubItems[0].Text;
                XmlDocument MyXMLDoc 
= new XmlDocument();
                MyXMLDoc.Load(Application .StartupPath  
+ "/XML_6243.xml");
                
string strPath = "keys/key [keyname=" + '"' + strvalue + '"' + "]";
                XmlNode node 
= MyXMLDoc.SelectSingleNode(strPath);
                
if (node != null)
                
{
                    MyXMLDoc.DocumentElement.RemoveChild(node);
                   
/* XmlTextWriter MyWriter = new XmlTextWriter(Application .StartupPath  + "/XML_6243.xml", null);
                    MyWriter.Formatting = Formatting.Indented;
                    MyXMLDoc.WriteContentTo(MyWriter);
                    MyWriter.Close();
*/

                    MyXMLDoc.Save(Application .StartupPath  
+ "/XML_6243.xml");
                }

                MessageBox.Show(
"键码"+strvalue +"删除成功!","提示",MessageBoxButtons.OK ,MessageBoxIcon .Information );
                int_6243();
            }

            
catch (Exception ex)
            
{
                MessageBox.Show(ex.Message);
            }

        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值