【原创】ASP.NET WebApi接收xml文件 xml序列化

简介: 如何新建WebApi项目就不用我介绍了吧。直接进入正题。首先,在.net平台不论要接收什么,肯定是从Request里获取。大家肯定对普通的参数获取非常熟悉了,下面就介绍一下如何从Request获取文件流.System.IO.Stream sm =Request.Content.ReadAsStreamAsync().Result这个方法返回的是一个System.IO.Stream类型,如果是单纯想获得文件,到这一步你就可以把它保存到本地了。

如何新建WebApi项目就不用我介绍了吧。

直接进入正题。

首先,在.net平台不论要接收什么,肯定是从Request里获取。

大家肯定对普通的参数获取非常熟悉了,下面就介绍一下如何从Request获取文件流.

System.IO.Stream sm =Request.Content.ReadAsStreamAsync().Result

这个方法返回的是一个System.IO.Stream类型,如果是单纯想获得文件,到这一步你就可以把它保存到本地了。

这时候有些同学可能就要问了,要用什么方式读取里面的数据呢?

下面为大家介绍几种方式解析xml数据流:

转换为string类型:

 int len = (int)sm.Length;
 byte[] inputByts = new byte[len];
 sm.Read(inputByts, 0, len);
 sm.Close();
  string data = Encoding.GetEncoding("utf-8").GetString(inputByts);

2.转换为XmlDocument(需要先用第一个方法转为string):

XmlDocument xmlDocument=new XmlDocument();
xmlDocument.LoadXml(data );

3.转为对象:

方法一:

首先为xml所有含有子节点的节点创建对应的类和字段,节点里包含有子节点的节点的,用该节点对应的类作为字段类型。

下面附例子:

xml数据:

<?xml version="1.0" encoding="UTF-8" ?>
<ws:Worker_Sync
    xmlns:ws="http://www.w3.org/2001/XMLSchema-instance">
    <ws:Worker>
        <ws:Summary>
            <ws:ID>02741</ws:ID>
            <ws:Name>Tina</ws:Name>
        </ws:Summary>
        <ws:Age>true</ws:Age>
    </Worker>
    <ws:Worker>
        <ws:Summary>
            <ws:ID>02741</ws:ID>
            <ws:Name>Tina</ws:Name>
        </ws:Summary>
        <ws:Age>true</ws:Age>
    </Worker>
</Worker_Sync>

跟据xml我们可以知道需要创建三个Class,分别对应StudentSync、Student和Summary节点。

把类创建好之后,我们需要给它加上注解:

[System.Xml.Serialization.XmlRoot(ElementName ="Student_Sync", Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public class Student_Sync
{
     [System.Xml.Serialization.XmlElement("Student")]
     public Student[] Students { get; set; }
}

这里可能大家有注意到Student用的是Student[],这是因为在XML中有多个Student节点。

Student中与之类似:

[System.Xml.Serialization.XmlRoot("Student")]
public class Student
{
   [System.Xml.Serialization.XmlElement("Summary")]
   public Summary Summary { get; set; }
   [System.Xml.Serialization.XmlElement("Age")]
   public  int  Age { get; set; }
}

Summary:

[System.Xml.Serialization.XmlRoot("Summary")]
    public class Summary
    {
        [System.Xml.Serialization.XmlElement("ID")]
        public string ID { get; set; }
 
        [System.Xml.Serialization.XmlElement("Name")]
        public string Name { get; set; }
         
    }

Class创建完毕后,就可以进行转换了,这里我们使用XmlSerializer:

var serializer = new XmlSerializer(typeof(Student_Sync));
var Student_SyncItem = (Student_Sync)serializer.Deserialize(sm);

转换完成!

方法二:

使用Linq进行转换(这种方式不大用,就直接贴代码了,跟上面没关系哦!):

/// /// Linq方式加载
/// /// /// private void Button_Click_3(object sender, RoutedEventArgs e)
{
     //ClassDemo作为根节点会出现找不到的情况,所以加了个Config根节点
     List _demo = (from item in XElement.Load("XmlDemo2.xml").Elements("ClassDemo")                        
                    select new ClassDemo()
                    {
                      Name = item.Element("Name").Value,
                      Members = (from mem in item.Element("Members").Elements() select mem.Value).ToList(),
                      Children = (from child in item.Element("Children").Elements()
                             select new ClassChild()
                             {
                                 ID = child.Element("ID").Value,
                                 Name = child.Element("Name").Value
                             }).ToList()
                    }
                  ).ToList();
  
            MessageBox.Show("加载成功!");
        }

如果本文能帮助到你,我会感到万分荣幸~

感谢每一位收藏本站的小可爱@_@

转载请声明出处:

本文首发地址:https://www.fhcollege.com/FHCollege/Single?FHS_Post_Id=880a0f91-104c-4bf9-b41e-adc47894ae2a

本站地址:https://www.fhcollege.com

目录
相关文章
|
6天前
|
Linux C# Windows
.NET使用MiniWord高效生成Word文件
.NET使用MiniWord高效生成Word文件
30 12
|
2月前
|
开发框架 .NET 程序员
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
Autofac 是一个轻量级的依赖注入框架,专门为 .NET 应用程序量身定做,它就像是你代码中的 "魔法师",用它来管理对象的生命周期,让你的代码更加模块化、易于测试和维护
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
|
2月前
Visual Studio 快速分析 .NET Dump 文件
【11月更文挑战第10天】.NET Dump 文件是在 .NET 应用程序崩溃或出现问题时生成的,记录了应用程序的状态,包括内存对象、线程栈和模块信息。通过分析这些文件,开发人员可以定位和解决内存泄漏、死锁等问题。在 Visual Studio 中,可以通过调试工具、内存分析工具和符号加载等功能来详细分析 Dump 文件。此外,还可以使用第三方工具如 WinDbg 进行更深入的分析。
|
4月前
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
|
3月前
|
C# Windows
一款基于.NET开发的简易高效的文件转换器
一款基于.NET开发的简易高效的文件转换器
|
4月前
.NET 压缩/解压文件
【9月更文挑战第5天】在 .NET 中,可利用 `System.IO.Compression` 命名空间进行文件的压缩与解压。首先引入相关命名空间,然后通过 GZipStream 类实现具体的压缩或解压功能。下面提供了压缩与解压文件的方法示例及调用方式,便于用户快速上手操作。
|
5月前
|
Java Windows 容器
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
【应用服务 App Service】快速获取DUMP文件(App Service for Windows(.NET/.NET Core))
|
5月前
|
开发框架 .NET Linux
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
【Azure Developer】已发布好的.NET Core项目文件如何打包为Docker镜像文件
|
5月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
66 0
|
2月前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。