XML文件的读取、序列化和反序列化操作
public class XmlHelper
{
//从xml中获取MsgType
public static string XMLSelect(string XML)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(XML);
XmlNodeList Msgxnl = xmldoc.SelectNodes("xml/MsgType");
XmlNodeList Eventxnl = xmldoc.SelectNodes("xml/Event");
string MsgType = string.Empty;
string Event = string.Empty;
if (Msgxnl.Count != )//msgType不为空
{
MsgType = Msgxnl[].InnerText.Trim();
if (MsgType == "event")
{
if (Eventxnl.Count != )//event不为空
{
Event = Eventxnl[].InnerText.Trim();
if (Event == "unsubscribe" || Event == "subscribe" || Event == "LOCATION")
{
MsgType = Event;
}
else//eventKey存在
{
XmlNodeList xnlEventKey = xmldoc.SelectNodes("xml/EventKey");
if (xnlEventKey.Count != )
{
MsgType = xnlEventKey[].InnerText.Trim();
}
}
}
}
}
//else
//{
// XmlNode xn = xmldoc.SelectSingleNode("UpdateInfo/MsgType");
// if (xn!=null)
// {
// MsgType = xn.InnerText.Trim();
// }
//}
return MsgType;
}
//对象反序列化
public static T XmlDeserialize<T>(string xmlString)
{
T t = default(T);
using (MemoryStream stream = new MemoryStream())
{
using (StreamWriter sw = new StreamWriter(stream, Encoding.UTF8))
{
sw.Write(xmlString);
sw.Flush();
stream.Seek(, SeekOrigin.Begin);
XmlSerializer serializer = new XmlSerializer(typeof(T));
try
{
t = ((T)serializer.Deserialize(stream));
}
catch (Exception ex)
{
throw ex;
}
}
}
return t;
}
//自定义对象序列化成字符串
public static string CustomXMLSerialize<T>(T obj, string XML)
{
StringBuilder stringBuilder = new StringBuilder();
Type type = obj.GetType();//TextSendInfo
object[] classAtts = obj.GetType().GetCustomAttributes(typeof(XmlRootAttribute), false);//返回自定义特性的数组,XmlRootAttribute
if (classAtts.Length > )
{
string XmlRoot = ((XmlRootAttribute)classAtts[]).ElementName;//xml
stringBuilder.Append("<");
stringBuilder.Append(XmlRoot);
stringBuilder.Append(">"); PropertyInfo[] propertyArr = obj.GetType().GetProperties();//5个属性元素
if (propertyArr.Length > )
{
foreach (var propertyInfo in propertyArr)
{
object value = propertyInfo.GetValue(obj, null);//根据propertyInfo属性从obj中获取值,"请先在授权页面申请授权,再使用该功能!"
object[] propertyAtts = propertyInfo.GetCustomAttributes(typeof(XmlElementAttribute), false);//XmlElementAttribute
if (propertyAtts.Length > )
{
string xmlElementName = ((XmlElementAttribute)propertyAtts[]).ElementName;//content
stringBuilder.Append("<");
stringBuilder.Append(xmlElementName);
stringBuilder.Append(">");
if (xmlElementName == "CreateTime")
{
stringBuilder.Append(value);
}
else
{
stringBuilder.Append("<![CDATA[" + value + "]]>");
}
stringBuilder.Append("</");
stringBuilder.Append(xmlElementName);
stringBuilder.Append(">");
}
}
}
if (XML != string.Empty)
{
stringBuilder.Append(XML);
}
stringBuilder.Append("</");
stringBuilder.Append(XmlRoot);
stringBuilder.Append(">");
}
return stringBuilder.ToString();
}
}
XML文件的读取、序列化和反序列化操作的更多相关文章
- 基于.net core封装的xml序列化,反序列化操作
需求: 由于在.net core中去除了Xml序列化XmlSerializer操作类.因此,在于一此数据传输当中出,需要用到对xml格式字符串的处理问题.因此封装了一个xml序列化与反序列化操作的类库 ...
- python json序列化与反序列化操作
python json序列化与反序列化操作 # dumps() dict-->str 序列化 # loads() str---dict 反序列化 result1 = json.dumps({'a ...
- java浅克隆和深克隆,序列化和反序列化实现深克隆(封装序列化和反序列化操作)
本篇博客内容: 一.浅克隆(ShallowClone)和深克隆(DeepClone) 二.序列化和反序列化实现深克隆 三.封装序列化和反序列化操作 ObjectOutputStream + 内存流By ...
- spring 框架的xml文件如何读取properties文件数据
spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...
- python之xml 文件的读取方法
''' xml 文件的读取方法 ''' #!/usr/bin/env python # -*- coding: utf- -*- import xml.etree.ElementTree as ET ...
- Android -- 创建XML文件对象及其序列化, pull解析XML文件
1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...
- 用dom4j解析xml文件并执行增删改查操作
转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...
- Java文件操作①——XML文件的读取
一.邂逅XML 文件种类是丰富多彩的,XML作为众多文件类型的一种,经常被用于数据存储和传输.所以XML在现今应用程序中是非常流行的.本文主要讲Java解析和生成XML.用于不同平台.不同设备间的数据 ...
- JavaScript XML 兼容处理,序列化和反序列化以及回调事件
浏览器中XML DOM的支持 IE中通过ActiveXObject实现了XML的支持,存在一下几个版本:Microsoft.XmlDom,MSXML2.DOMDocument,MSXML2.DOMDo ...
- javascript 实现 对XML文件 2级/3级联动操作
js代码 //实现对xml文档的读取:function loadXMLDoc(dname) { try // Internet Explorer { xmlDoc = new ActiveXObjec ...
随机推荐
- Remove Duplicates from Sorted List II [LeetCode]
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb ...
- IO流--复制picture ,mp3
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import ...
- BZOJ1593 [Usaco2008 Feb]Hotel 旅馆
裸上线段树,就是记的东西有点多... 每个点记区间左端最长0,右端最长0,中间最长0,和tag表示是否全为0/1 直接更新就好,查询的时候先查左儿子,然后查中间,最后查右儿子... /******** ...
- BZOJ3695 滑行
转化模型就变成几层折射率不同的玻璃光要怎么走才能从(0, 0)到(x, y) 我们发现第一次光线射出去的角度确定,之后光的行程是确定的 而且角度和最后到达y时的x成正相关,于是可以二分! 然后物理学学 ...
- sql语句查询重复的数据
查找所有重复标题的记录: SELECT *FROM t_info aWHERE ((SELECT COUNT(*)FROM t_infoWHERE Title = a.Title) > 1)OR ...
- Oracle内置函数内容整理
--绝对值select abs(-100) from dual; --取余select mod(8,3) from dual; --取整,大于该数的最小整数(上限值)select ceil(12.0) ...
- POJ 1125 Stockbroker Grapevine 最短路 难度:0
http://poj.org/problem?id=1125 #include <iostream> #include <cstring> using namespace st ...
- java中的日志组件-log4j
1.为什么使用日志组件 Log4J是Apache的一个开放源代码项目,它是一个日志操作包,通过使用Log4J,可以指定日志信息输出的目的地,如控制台.文件.CUI组件.NT的事件记录器:还可以控制每一 ...
- jsp:useBean标准动作
1.bean法则 JavaBean和企业JavaBean是完全不相干的两个东西.普通的非企业JavaBean需要满足一定的规范才能被JSP和servlet使用: 1)必须有一个无参数的公共构造函数: ...
- 【转发】du命令 实现Linux 某个文件夹下的文件按大小排序
1. df -lh 2. du -s /usr/* | sort -rn这是按字节排序 3. du -sh /usr/* | sort -rn这是按兆(M)来排序 4.选出排在前面的10个du -s ...