c#对xml的创建、查询

假设一个xml文件内容如下:

?
<? xml  version = "1.0"  encoding = "UTF-8" ?> 
   < Person  id = "1"
     < Name >张三</ Name
     < Age >18</ Age
   </ Person
   < Person  id = "2"
     < Name >李四</ Name
     < Age >20</ Age
   </ Person
</ Persons

 创建xml代码如下:

?
private  void  button1_Click( object  sender, EventArgs e) 
       
            XmlDocument doc = new  XmlDocument(); 
            XmlDeclaration dec = doc.CreateXmlDeclaration( "1.0" , "UTF-8" , null ); 
            doc.AppendChild(dec); 
            //根节点 
            XmlElement root = doc.CreateElement( "Persons" ); 
            doc.AppendChild(root); 
            root.AddEleAttr(doc, "xmlns:xsi" , "http://www.w3.org/2001/XMLSchema-instance" ); 
            root.AddEleAttr(doc, "xmlns" , "http://www.xxx.com/XxxSystem" ); 
            //根节点的每个独立子节点 
            XmlElement body = doc.CreateElement( "Person" ); 
            body.AddEleAttr(doc, "id" , "1" );    
            body.AddChildNode(doc, "Name" , "张三" ); 
            body.AddChildNode(doc, "Age" , "18" );     
            root.AppendChild(body); 
   
            //根节点的每个独立子节点 
            body = doc.CreateElement( "Person" ); 
            body.AddEleAttr(doc, "id" , "2" ); 
            body.AddChildNode(doc, "Name" , "李四" ); 
            body.AddChildNode(doc, "Age" , "20" );            
            root.AppendChild(body); 
   
            doc.Save( "person.xml" ); 
       

 查询id=2时的姓名和年龄

?
private  void  button2_Click( object  sender, EventArgs e) 
       
             XmlDocument doc = new  XmlDocument(); 
             using  (StreamReader sr = new  StreamReader( "person.xml" , Encoding.UTF8)) 
            
                 doc.Load(sr); 
                 XmlNamespaceManager nsMgr = new  XmlNamespaceManager(doc.NameTable); 
                 nsMgr.AddNamespace( "ns" , "http://www.xxx.com/XxxSystem" ); 
                 XmlNodeList nodes = doc.SelectNodes( "//ns:Person[@id=2]" , nsMgr); 
                 foreach  (XmlNode item in  nodes) 
                
                     string  name = item.SelectSingleNode( "//ns:Name" , nsMgr).InnerText; 
                     string  age = item.SelectSingleNode( "//ns:Age" , nsMgr).InnerText; 
                     MessageBox.Show( string .Format( "{0}:{1}" , name, age)); 
                
            
        }    

 

注:上面创建xml用到的两个扩展方法如下:

?
/// <summary> 
/// XML元素添加属性 
/// </summary> 
public  static  void  AddEleAttr( this  XmlElement src, XmlDocument doc, string  name, string  value) 
     XmlAttribute attr = doc.CreateAttribute(name); 
     attr.Value = value; 
     src.Attributes.Append(attr); 
/// <summary> 
/// XML元素添加子节点 
/// </summary> 
public  static  void  AddChildNode( this  XmlElement src, XmlDocument doc, string  name, string  innerText) 
     XmlElement elem = doc.CreateElement(name); 
     elem.InnerText = innerText; 
     src.AppendChild(elem); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值