/// <summary> /// 将xmlByte解析为obj /// </summary> /// <param name="xmlByte"></param> /// <param name="obj"></param> /// <returns></returns> private bool XmlDeSerializer(byte[] xmlByte, object obj) { try { //判断字符串是否为空 if (xmlByte != null) { ESRI.ArcGIS.esriSystem.IPersistStream pStream = obj as ESRI.ArcGIS.esriSystem.IPersistStream; ESRI.ArcGIS.esriSystem.IXMLStream xmlStream = new ESRI.ArcGIS.esriSystem.XMLStreamClass(); xmlStream.LoadFromBytes(ref xmlByte); pStream.Load(xmlStream as ESRI.ArcGIS.esriSystem.IStream); return(true); } return(false); } catch (Exception eError) { //********************************************* //guozheng 2010-12-24 平安夜 added 系统异常日志 //if (ModData.SysLog == null) ModData.SysLog = new clsWriteSystemFunctionLog(); //ModData.SysLog.Write(eError); //********************************************** return(false); } }
public static void XmlSerializer(System.Object xmlObject, System.String xmlNodeName, out string strXML) { strXML = ""; System.String elementURI = "http://www.esri.com/schemas/ArcGIS/9.2"; // Create xml writer ESRI.ArcGIS.esriSystem.IXMLWriter xmlWriterCls = new ESRI.ArcGIS.esriSystem.XMLWriterClass(); // Create xml stream ESRI.ArcGIS.esriSystem.IXMLStream xmlStreamCls = new ESRI.ArcGIS.esriSystem.XMLStreamClass(); // Explicit Cast for IStream and then write to stream xmlWriterCls.WriteTo((ESRI.ArcGIS.esriSystem.IStream)xmlStreamCls); // Serialize ESRI.ArcGIS.esriSystem.IXMLSerializer xmlSerializerCls = new ESRI.ArcGIS.esriSystem.XMLSerializerClass(); xmlSerializerCls.WriteObject(xmlWriterCls, null, null, xmlNodeName, elementURI, xmlObject); // Save the xmlObject to an xml file. When using xmlstream the cpu keeps data in memory until it is written to file. //xmlStreamCls.SaveToFile(@xmlPathFile); strXML = xmlStreamCls.SaveToString(); }
/// <summary> /// 将xmlByte解析为obj /// </summary> /// <param name="xmlByte"></param> /// <param name="obj"></param> /// <returns></returns> private bool XmlDeSerializer(byte[] xmlByte, object obj) { try { //判断字符串是否为空 if (xmlByte != null) { ESRI.ArcGIS.esriSystem.IPersistStream pStream = obj as ESRI.ArcGIS.esriSystem.IPersistStream; ESRI.ArcGIS.esriSystem.IXMLStream xmlStream = new ESRI.ArcGIS.esriSystem.XMLStreamClass(); xmlStream.LoadFromBytes(ref xmlByte); pStream.Load(xmlStream as ESRI.ArcGIS.esriSystem.IStream); return(true); } return(false); } catch { return(false); } }
/// <summary> /// 序列化(将对象序列化成字符串) /// </summary> /// <param name="xmlByte">序列化字节</param> /// <param name="obj">序列化对象</param> /// <returns></returns> public static byte[] xmlSerializer(object obj) { try { byte[] xmlByte = null;//保存序列化后的字节 //判断是否支持IPersistStream接口,只有支持该接口的对象才能进行序列化 if (obj is ESRI.ArcGIS.esriSystem.IPersistStream) { ESRI.ArcGIS.esriSystem.IPersistStream pStream = obj as ESRI.ArcGIS.esriSystem.IPersistStream; ESRI.ArcGIS.esriSystem.IXMLStream xmlStream = new ESRI.ArcGIS.esriSystem.XMLStreamClass(); pStream.Save(xmlStream as ESRI.ArcGIS.esriSystem.IStream, 0); xmlByte = xmlStream.SaveToBytes(); } return(xmlByte); } catch (Exception e) { //******************************************************************* //guozheng added if (ModData.SysLog != null) { ModData.SysLog.Write(e, null, DateTime.Now); } else { ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog(); ModData.SysLog.Write(e, null, DateTime.Now); } //******************************************************************** return(null); } }
private string serializeGeo(ESRI.ArcGIS.Geometry.IGeometry geo, Boolean ESRISerialize) { if (ESRISerialize) { System.String xmlNodeName = "NodeName"; System.String elementURI = "http://www.esri.com/schemas/ArcGIS/10"; // Create xml writer ESRI.ArcGIS.esriSystem.IXMLWriter xmlWriter = new ESRI.ArcGIS.esriSystem.XMLWriterClass(); // Create xml stream ESRI.ArcGIS.esriSystem.IXMLStream xmlStream = new ESRI.ArcGIS.esriSystem.XMLStreamClass(); // Explicit Cast for IStream and then write to stream xmlWriter.WriteTo((ESRI.ArcGIS.esriSystem.IStream)xmlStream); // Serialize ESRI.ArcGIS.esriSystem.IXMLSerializer xmlSerializer = new ESRI.ArcGIS.esriSystem.XMLSerializerClass(); xmlSerializer.WriteObject(xmlWriter, null, null, xmlNodeName, elementURI, geo); return xmlStream.SaveToString(); } else { switch (geo.GeometryType) { case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPoint: { ESRI.ArcGIS.Geometry.IPoint pPnt = (ESRI.ArcGIS.Geometry.IPoint)geo; return "<Point><X>" + pPnt.X + "</X><Y>" + pPnt.Y + "</Y></Point>"; //break; } case ESRI.ArcGIS.Geometry.esriGeometryType.esriGeometryPolyline: { string lineString = "<PathArray>"; ESRI.ArcGIS.Geometry.IPolyline pPly = (ESRI.ArcGIS.Geometry.IPolyline)geo; ESRI.ArcGIS.Geometry.IGeometryCollection pGC = (ESRI.ArcGIS.Geometry.IGeometryCollection)pPly; for (int i = 0; i < pGC.GeometryCount; i++) { lineString = lineString + "<Path><PointArray>"; //ESRI.ArcGIS.Geometry.IGeometry pGeo2 = pGC.get_Geometry(i); // ESRI.ArcGIS.Geometry.IPath pPath = (ESRI.ArcGIS.Geometry.IPath)pGC.get_Geometry(i); ESRI.ArcGIS.Geometry.IPointCollection pPointCol = (ESRI.ArcGIS.Geometry.IPointCollection)pGC.get_Geometry(i); for (int j = 0; j < pPointCol.PointCount; j++) { ESRI.ArcGIS.Geometry.IPoint pPathPoint = pPointCol.get_Point(j); lineString = lineString + "<Point><X>" + pPathPoint.X + "</X><Y>" + pPathPoint.Y + "</Y></Point>"; } // string tr = pGeo2.GeometryType.ToString(); lineString = lineString + "</PointArray></Path>"; } lineString = lineString + "</PathArray>"; return lineString; // return "<Point><X>" + pPnt.X + "</X><Y>" + pPnt.Y + "</Y></Point>"; // break; } default: { return ""; // break; } } } }