【原创】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

目录
相关文章
|
7月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
188 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
277 1
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
201 1
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
开发框架 .NET 程序员
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
Autofac 是一个轻量级的依赖注入框架,专门为 .NET 应用程序量身定做,它就像是你代码中的 "魔法师",用它来管理对象的生命周期,让你的代码更加模块化、易于测试和维护
509 4
驾驭Autofac,ASP.NET WebApi实现依赖注入详细步骤总结
|
Java Maven
maven项目的pom.xml文件常用标签使用介绍
第四届人文,智慧教育与服务管理国际学术会议(HWESM 2025) 2025 4th International Conference on Humanities, Wisdom Education and Service Management
975 8
|
XML Android开发 数据格式
Eclipse 创建 XML 文件
Eclipse 创建 XML 文件
192 2
|
XML JavaScript Java
java与XML文件的读写
java与XML文件的读写
161 3
|
开发框架 监控 前端开发
在 ASP.NET Core Web API 中使用操作筛选器统一处理通用操作
【9月更文挑战第27天】操作筛选器是ASP.NET Core MVC和Web API中的一种过滤器,可在操作方法执行前后运行代码,适用于日志记录、性能监控和验证等场景。通过实现`IActionFilter`接口的`OnActionExecuting`和`OnActionExecuted`方法,可以统一处理日志、验证及异常。创建并注册自定义筛选器类,能提升代码的可维护性和复用性。
216 3
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
253 1

相关课程

更多