zoukankan      html  css  js  c++  java
  • 根据xml文件名获取xml数据并转化为实体。

    1.定义一个xml文件。

     1 <?xml version="1.0" encoding="utf-8" ?>
     2 <UserManager xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
     3   <User>
     4     <UserName>王三</UserName>
     5     <Age>18</Age>
     6     <Gender>male</Gender>
     7   </User>
     8   <User>
     9     <UserName>李四</UserName>
    10     <Age>18</Age>
    11     <Gender>male</Gender>
    12   </User>
    13   <User>
    14     <UserName>王五</UserName>
    15     <Age>18</Age>
    16     <Gender>male</Gender>
    17   </User>
    18 </UserManager>

    2.定义Helper类。

     1  public class NickZHao
     2     {
     3         public static string GetXmlPath(string XmlName)
     4         {
     5             string filePath = string.Empty;
     6             filePath = System.Web.HttpContext.Current.Server.MapPath(string.Concat("", XmlName+".xml"));
     7 
     8             return filePath;
     9         }
    10 
    11         public static List<T> XmlToEntityList<T>(string XmlName)
    12         {
    13             string xmlPath = GetXmlPath(XmlName);
    14             XmlSerializer serializer = new XmlSerializer(typeof(List<T>));
    15             Object obj = new Object();
    16 
    17             if (File.Exists(xmlPath))
    18             {
    19                 using (StreamReader reader = new StreamReader(xmlPath))
    20                 {
    21                     try
    22                     {
    23                         obj = serializer.Deserialize(reader);
    24                     }
    25                     catch (Exception ex)
    26                     {
    27                         //Here put your code witch dealing with exception
    28                     }
    29                 }
    30             }
    31             return (List<T>)obj;
    32         }
    33 
    34         public static T XmlToEntity<T>(string XmlName)
    35         {
    36             string xmlPath = GetXmlPath(XmlName);
    37             XmlSerializer serializer = new XmlSerializer(typeof(T));
    38             Object obj = new Object();
    39 
    40             if (File.Exists(xmlPath))
    41             {
    42                 using (StreamReader reader = new StreamReader(xmlPath))
    43                 {
    44                      try
    45                     {
    46                         obj = serializer.Deserialize(reader);
    47                     }
    48                      catch (Exception ex)
    49                      {
    50                          //Here put your code witch dealing with exception
    51                      }
    52                 }
    53             }
    54             return (T)obj;
    55         }  
    56     }

    3.调用

         UserManager userManager = NickZHao.XmlToEntity<UserManager>("User");
    
            [XmlRoot(ElementName = "UserManager")]
            public class UserManager 
            {
                [XmlElement(ElementName = "User")]
                public List<User> UserList { get; set; }
    
            }
            
            public class User
            {
                public string UserName { get; set; }
    
                public int Age { get; set; }
    
                public string Gender { get; set; }
    
            }

    注意:在定义实体类是记得标记根节点

    [XmlRoot(ElementName = "UserManager")]

    和节点元素

    [XmlElement(ElementName = "User")]
  • 相关阅读:
    以UIWebView的方式来播放网络多媒体档案
    Cocoa.Programming.for.Mac系统文章翻译
    iOS开发教程:Storyboard全解析第二部分
    boost日期、时间操作
    使用thrift大量编译警告消息方法
    一键自动往crontab添加条目脚本
    apache thrift的不足
    将Fedora 18 LXDE安装到U盘和进入图形界面的方法
    boost库thread.hpp编译警告(type attributes are honored only at type definition)已修复
    平板电视必知知识
  • 原文地址:https://www.cnblogs.com/kejie/p/6207514.html
Copyright © 2011-2022 走看看