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文件的读取、序列化和反序列化操作的更多相关文章

  1. 基于.net core封装的xml序列化,反序列化操作

    需求: 由于在.net core中去除了Xml序列化XmlSerializer操作类.因此,在于一此数据传输当中出,需要用到对xml格式字符串的处理问题.因此封装了一个xml序列化与反序列化操作的类库 ...

  2. python json序列化与反序列化操作

    python json序列化与反序列化操作 # dumps() dict-->str 序列化 # loads() str---dict 反序列化 result1 = json.dumps({'a ...

  3. java浅克隆和深克隆,序列化和反序列化实现深克隆(封装序列化和反序列化操作)

    本篇博客内容: 一.浅克隆(ShallowClone)和深克隆(DeepClone) 二.序列化和反序列化实现深克隆 三.封装序列化和反序列化操作 ObjectOutputStream + 内存流By ...

  4. spring 框架的xml文件如何读取properties文件数据

    spring 框架的xml文件如何读取properties文件数据 第一步:在spring配置文件中 注意:value可以多配置几个properties文件 <bean id="pro ...

  5. python之xml 文件的读取方法

    ''' xml 文件的读取方法 ''' #!/usr/bin/env python # -*- coding: utf- -*- import xml.etree.ElementTree as ET ...

  6. Android -- 创建XML文件对象及其序列化, pull解析XML文件

    1. 创建XML文件对象及其序列化 示例代码:(模拟以xml格式备份短信到SD卡) SmsInfo.java, bean对象 /** * 短信的业务bean * @author Administrat ...

  7. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

  8. Java文件操作①——XML文件的读取

    一.邂逅XML 文件种类是丰富多彩的,XML作为众多文件类型的一种,经常被用于数据存储和传输.所以XML在现今应用程序中是非常流行的.本文主要讲Java解析和生成XML.用于不同平台.不同设备间的数据 ...

  9. JavaScript XML 兼容处理,序列化和反序列化以及回调事件

    浏览器中XML DOM的支持 IE中通过ActiveXObject实现了XML的支持,存在一下几个版本:Microsoft.XmlDom,MSXML2.DOMDocument,MSXML2.DOMDo ...

  10. javascript 实现 对XML文件 2级/3级联动操作

    js代码 //实现对xml文档的读取:function loadXMLDoc(dname) { try // Internet Explorer { xmlDoc = new ActiveXObjec ...

随机推荐

  1. sql server中局部变量与全局变量的 申明与赋值(转)

    来源:http://www.111cn.net/database/mssqlserver/36734.htm 例子:http://www.cnblogs.com/sunxi/p/4497493.htm ...

  2. struts2配置通用action一个顶N个,你还在写一大堆action吗?

    <!-- 通用action!!!约定优于配置 --> <action name="*_*" class="cn.cnsdhzzl.action.{1}A ...

  3. Java 线程综述

    线程重在 线程同步和线程通信的编程 1.线程与进程?  线程是指程序在执行过程中,能够执行程序代码的一个执行单元.线程的状态:运行.就绪.挂起(suspend).结束; 进程是指一段正在执行的程序. ...

  4. Python环境的安装

    参考官方文档 http://www.runoob.com/python/python-install.html Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上). 您需要下载适用 ...

  5. Facebook 内部高效工作PPT

    Facebook 内部分享:不论你如何富有,你都赚不到更多的时间,你也回不到过去.没有那么多的假如,只有指针滴答的时光飞逝和你应该好好把握的现在,以下26张PPT的分享将为您带来时间价值管理的技巧. ...

  6. Jsp开发自定义标签,自定义标签将字符串转成指定的时间格式显示

    本例以将 字符串格式的时间转成指定的时间格式显示. 第一步.定义一个标签处理程序类,需要集成javax.servlet.jsp.tagext.TagSupport,代码如下: import java. ...

  7. 在Ios里UIWebView参入js

    //修改图片大小适应webView宽高度            [webView stringByEvaluatingJavaScriptFromString:       @"var sc ...

  8. 结对编程——关于Fault、Error、Failure程序设计

    一.问题描述:         构造程序,分别是:         •不能触发Fault         •触发Fault,但是不能触发Error         •触发Error,但是不能产生Fai ...

  9. lucas 定理学习

    大致意思就是求组合数C(n , m) % p的值, p为一个偶数 可以将组合数的n 和 m都理解为 p 进制的表示 n  = ak*p^k + a(k-1)*p^(k-1) + ... + a1*p ...

  10. MSP430x1_4_6x之问题总结

    01:MSP430端口上电复位的初始值是不确定的:所以使用是都要初始化:比如加下面的语句或者加你使用的端口就行了:  /*下面六行程序关闭所有的IO口*/    P1DIR = 0XFF;P1OUT ...