如何新建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

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

收藏 打印