如何新建WebApi项目就不用我介绍了吧。
直接进入正题。
首先,在.net平台不论要接收什么,肯定是从Request里获取。
大家肯定对普通的参数获取非常熟悉了,下面就介绍一下如何从Request获取文件流.
System.IO.Stream sm =Request.Content.ReadAsStreamAsync().Result这个方法返回的是一个System.IO.Stream类型,如果是单纯想获得文件,到这一步你就可以把它保存到本地了。
这时候有些同学可能就要问了,要用什么方式读取里面的数据呢?
下面为大家介绍几种方式解析 数据流:
转换为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.转换为 Document(需要先用第一个方法转为string):
Document Document=new Document(); Document.Load (data );3.转为对象:
方法一:
首先为 所有含有子节点的节点创建对应的类和字段,节点里包含有子节点的节点的,用该节点对应的类作为字段类型。
下面附例子:
数据:
<? version="1.0" encoding="UTF-8" ?><ws:Worker_Sync ns:ws="http://www.w3.org/2001/ Schema-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>跟据 我们可以知道需要创建三个Class,分别对应StudentSync、Student和Summary节点。
把类创建好之后,我们需要给它加上注解:
[System. .Serialization. Root(ElementName ="Student_Sync", Namespace = "http://www.w3.org/2001/ Schema-instance")]public class Student_Sync{ [System. .Serialization. Element("Student")] public Student[] Students { get; set; }}这里可能大家有注意到Student用的是Student[],这是因为在 中有多个Student节点。
Student中与之类似:
[System. .Serialization. Root("Student")]public class Student{ [System. .Serialization. Element("Summary")] public Summary Summary { get; set; } [System. .Serialization. Element("Age")] public int Age { get; set; }}Summary:
[System. .Serialization. Root("Summary")] public class Summary { [System. .Serialization. Element("ID")] public string ID { get; set; } [System. .Serialization. Element("Name")] public string Name { get; set; } }Class创建完毕后,就可以进行转换了,这里我们使用 Serializer:
var serializer = new Serializer(typeof(Student_Sync));var Student_SyncItem = (Student_Sync)serializer.Deserialize(sm);转换完成!
方法二:
使用Linq进行转换(这种方式不大用,就直接贴代码了,跟上面没关系哦!):
/// /// Linq方式加载/// /// /// private void Button_Click_3( sender, RoutedEventArgs e){ //ClassDemo作为根节点会出现找不到的情况,所以加了个Config根节点 List _demo = (from item in XElement.Load(" Demo2. ").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
继续阅读与本文标签相同的文章
上一篇 :
函数用得好,轻松下班早
下一篇 :
Kubernetes 应用发布与监控联动
-
解密“CDO-首席数据官”的价值、挑战及发展
2026-05-19栏目: 教程
-
使用资源编排服务(ROS)轻松玩转分布式关系型数据库(DDRS)
2026-05-19栏目: 教程
-
怎么才能快速提高小程序留存率!
2026-05-19栏目: 教程
-
《安全说道》重磅上线!企业不做这件事竟然违法?
2026-05-19栏目: 教程
-
智能分析的所见即所得——基于Lambda架构的实时数据引擎
2026-05-19栏目: 教程
