C#Xml,json解析以及Socket传输问题
来源:互联网 发布:adobe cs3 mac 破解版 编辑:程序博客网 时间:2024/06/04 00:26
由于最近写了一个C#小项目,特此来总结下c#的常见问题
1.xml解析
<span style="white-space:pre"></span> XmlDocument xmlDoc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true;//忽略文档里面的注释 XmlReader reader = XmlReader.Create(@"..\..\Common\Dict.xml", settings); xmlDoc.Load(reader); XmlNode xn = xmlDoc.SelectSingleNode("Dictionary"); XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xnf in xnl) { XmlElement xe = xnf as XmlElement;将xml文件读取到字典里
2.json解析
这里给大家说一个很简单的方法
点击vs的工具-----》NuGet包管理器--------》程序包管理器控制台
这下在控制台中输入install-package newtonsoft.json
就是导入一个newtonsoft.json包他是.NET中开源的JSon序列化和反序列化类库
json字符串反序列化为类
DiskFolder folder = JsonConvert.DeserializeObject<DiskFolder>(sendinfo[1])
而类序列化为字符串则更简单
message = JsonConvert.SerializeObject(diskfolder);
3.socket信息传输
手机客户端的发送与接收消息主要采用的DataReader和DataWriter类
DataReader常用函数
public IBuffer ReadBuffer(System.UInt32 length); public void ReadBytes(System.Byte[] value); public DateTimeOffset ReadDateTime(); public System.Double ReadDouble(); public Guid ReadGuid(); public System.Int16 ReadInt16(); public System.Int32 ReadInt32(); public System.Int64 ReadInt64(); // 从输入流中读取浮点值。 public System.Single ReadSingle(); // 从输入流中读取字符串值。 public System.String ReadString(System.UInt32 codeUnitCount); // 从输入流中读取时间间隔值。 public TimeSpan ReadTimeSpan(); // 从输入流中读取 16 位无符号整数。 public System.UInt16 ReadUInt16(); // 从输入流中读取 32 位无符号整数。 public System.UInt32 ReadUInt32(); // 从输入流中读取 64 位无符号整数。 public System.UInt64 ReadUInt64();
发送
<span style="color:#ff0000;"> </span> using (DataWriter writer = new DataWriter(socket.OutputStream)) { try { writer.WriteBytes(buffer); await writer.StoreAsync(); //提交数据 await writer.FlushAsync(); //刷新数据 writer.DetachStream(); //分离流 writer.Dispose(); //关闭 } catch (Exception e) { await new MessageDialog(e.Message).ShowAsync(); socket.Dispose(); } }
接收
<span style="white-space:pre"></span>DataReader reader = new DataReader(stream.InputStream); reader.InputStreamOptions = InputStreamOptions.Partial; //异步读取 try { await reader.LoadAsync(sizeof(Int64)); //从流中加载一个long长度的数据 string length = reader.ReadString(sizeof(Int64)); //获取所加载的long长度的数据 uint fileLength = Convert.ToUInt32(length); await reader.LoadAsync(fileLength); //从流中加载一个filelength长度的数据 filebuffer = new byte[fileLength]; reader.ReadBytes(filebuffer); //获取所加载的数据
DataReader和DatatWriter之间只要发送接收格式的顺序正确(先发一个int字节的,接收时就要先接收一个int字节的),他们本质上操作的还是对数据流的操作即byte类型
还有一点应该注意的是,一般会把DataReader放在using里面,为了合理释放内存,但是在循环接收信息时,由于对象会被释放,则在第二次加载数据时会抛出异常:意思就是对象已被释放,所以在循环接收数据时,就不要放在using里面了
4.获取手机sd卡文件
此处使用类KnownFolders.,此类也可以获取到手机的音乐库,图片库
<span style="white-space:pre"></span> StorageFile file = null; StorageFolder storagefolder = KnownFolders.RemovableDevices; foreach (var f in await storagefolder.GetFoldersAsync()) { foreach (var SDfolder in await f.GetFoldersAsync()) { if (SDfolder.Name == "Downloads") { file = await SDfolder.CreateFileAsync("textfile.png", CreationCollisionOption.ReplaceExisting); File.WriteAllBytes(file.Path, filebuffer); break; } } }
以后如果忘了就可以看看今天写的博客了
2 0
- C#Xml,json解析以及Socket传输问题
- 简单xml解析以及Json解析
- C++解析JSON进行网络传输--一个通过JSON方式的socket传输
- android网络编程之json传输数据以及解析方式
- xml 转json 传输
- IIS8中解析JSON错误以及IISExpress解析JSON问题
- XML解析和Json解析简介以及两者的区别
- SAX解析,DOM解析以及XML HTML JSON之间区别
- Android网络通信之解析XML以及解析JSON
- json解析以及datagrid列重复问题
- PHP以及JSON中的转义问题解析
- Socket 双向传输问题
- C语言Socket图片传输中的图片保存问题
- JSON解析,XML解析
- JSON解析、XML解析
- XML解析 JSON解析
- XML解析、Json解析
- JSON解析/XML解析
- Use of undeclared identifier 'BMKMapPointMake'错误 (百度地图)
- 关于Mysql5.6中使用group_concat()函数返回的数据总数不完整的坑
- Python中有效的字符串合并方法
- 开发一个App要100万?太扯淡
- 网络攻击
- C#Xml,json解析以及Socket传输问题
- 从Android运行时出发,打造我们的脱壳神器
- AFNetworking 支持cookies的解决方案
- android View事件传递
- Codeforces Round #326 (Div. 2) D. Duff in Beach(LIS)
- UE4 main classes explanation
- MR-2.MapReduce序列化&反序列化&MapReduce函数
- Postgresql通过批处理命令执行sql文件
- VMware中的Linux通过NAT方式和本机联网设置