private void LoadSetting() { XMLTransformer.ClearTransformerCache(); this.textBoxURI.Text = Program.Context.ConfigMgr.Config.SOAPServiceURI; this.textBoxAction.Text = Program.Context.ConfigMgr.Config.SOAPAction; }
//internal bool XSLTTransform(string sourceXml, ref string targetXml, string xsltFileName, bool enableExtension) //{ // string xslFile = ConfigHelper.GetFullPath(Program.AppArgument.ConfigFilePath, xsltFileName); // XMLTransformer it = XMLTransformer.CreateFromFileWithCache(xslFile, Program.Log, enableExtension); // return it.TransformString(sourceXml, ref targetXml, enableExtension ? XSLTExtensionTypes.XmlNodeTransformer : XSLTExtensionTypes.None); //} internal bool XSLTTransform(string sourceXml, ref string targetXml, string xsltFileName, bool enableExtension) { string xslFile = ConfigHelper.GetFullPath(_contextForTemplate2.AppArgument.ConfigFilePath, xsltFileName); XMLTransformer it = XMLTransformer.CreateFromFileWithCache(xslFile, _contextForTemplate2.Log, enableExtension); Message sourceMsg = new Message(); sourceMsg.Body = sourceXml; string targetMsgXml = null; string sourceMsgXml = sourceMsg.ToXMLString(); bool res = it.TransformString(sourceMsgXml, ref targetMsgXml, enableExtension ? XSLTExtensionTypes.XmlNodeTransformer : XSLTExtensionTypes.None); if (res) { Message targetMsg = XObjectManager.CreateObject <Message>(targetMsgXml); if (targetMsg != null) { targetXml = targetMsg.Body; } else { _contextForTemplate2.Log.Write(LogType.Error, "Cannot parse xml string to message object. \r\n" + targetMsgXml); res = false; } } return(res); }
private MSG.Message TransformToCSBDataSetSchemedXDSGWMessage(MSG.Message msg, string msgID) { if (!_entity.Context.ConfigMgr.Config.EnableXMLTransform) { return(msg); } _entity.Context.Log.Write("Begin transforming XDSGW message."); string file = ConfigHelper.GetFullPath(_entity.Context.AppArgument.ConfigFilePath, _entity.Context.ConfigMgr.Config.XSLTFilePath); XMLTransformer t = XMLTransformer.CreateFromFileWithCache(file, _entity.Context.Log); if (t == null) { return(null); } string csbMsgXml = ""; string otherMsgXml = msg.ToXMLString(); if (!t.TransformString(otherMsgXml, ref csbMsgXml, XSLTExtensionTypes.None)) { return(null); } MSG.Message csbMsg = XObjectManager.CreateObject <MSG.Message>(csbMsgXml); if (csbMsg == null) { _entity.Context.Log.Write(LogType.Error, "Cannot deserialize the transformed XML into XDSGW message."); string fname = string.Format("{0}_transformed", msgID); DumpErrorMessage(csbMsgXml, fname); } _entity.Context.Log.Write("Finish transforming XDSGW message."); return(csbMsg); }
public static List <XIMWrapper> Transform(XMLTransformer transformer, List <DataSet> dataSetList) { if (transformer == null || dataSetList == null) { return(null); } List <XIMWrapper> resultList = new List <XIMWrapper>(); foreach (DataSet ds in dataSetList) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); ds.WriteXml(sw); string xml = sb.ToString(); string str = ""; if (transformer.TransformString(xml, ref str)) { XIMWrapper w = new XIMWrapper(str); w.GUIDList.Add(ConfigMain.GetGUID(ds)); resultList.Add(w); } } return(resultList); }
internal bool XSLTTransform(string sourceXml, ref string targetXml, string xsltFileName) { string xslFile = ConfigHelper.GetFullPath(_contextForTemplate.AppArgument.ConfigFilePath, xsltFileName); XMLTransformer it = XMLTransformer.CreateFromFileWithCache(xslFile, _contextForTemplate.Log); return(it.TransformString(sourceXml, ref targetXml, XSLTExtensionTypes.None)); }
/// <summary> /// In order to support including multiple XSLT files in the XSLT script, /// we disable the external extension (e.g. calling C# code from XSLT) currently. /// </summary> /// <param name="sourceMsg"></param> /// <param name="targetMsg"></param> /// <param name="rootFolderPath"></param> /// <param name="log"></param> /// <returns></returns> public bool TransformMessage(Message sourceMsg, out Message targetMsg, string rootFolderPath, ILog log) { targetMsg = null; if (sourceMsg == null) { return(false); } string xslFilePath = XSLTFileLocation; if (!Path.IsPathRooted(xslFilePath)) { xslFilePath = Path.Combine(rootFolderPath, xslFilePath); } XMLTransformer t = XMLTransformer.CreateFromFileWithCache(xslFilePath, log, EnableXSLTExtension); if (t == null) { return(false); } string targetString = null; string sourceString = sourceMsg.ToXMLString(); if (!t.TransformString(sourceString, ref targetString, XSLTExtensionTypes.None) || string.IsNullOrEmpty(targetString)) { return(false); } targetMsg = XObjectManager.CreateObject <Message>(targetString); return(targetMsg != null); }
private void LoadSetting() { //_receiver = new SOAPReceiver(Path.Combine(Application.StartupPath, "HYS.IM.MessageDevices.SOAPAdapter.SOAPServer.exe.config"), Program.Log); _receiver = new SOAPReceiver(Program.Context.ConfigMgr.Config, Program.Context.ConfigMgr.Config.GetWCFConfigFileNameWithFullPath(), Program.Context.Log, true); _receiver.OnMessageReceived += new ReceiveSOAPMessageHandler(SOAPReceiver_OnMessageReceived); _controler = new SOAPServerControler(Program.Context); XMLTransformer.ClearTransformerCache(); this.textBoxURI.Text = Program.Context.ConfigMgr.Config.SOAPServiceURI; }
private void buttonHL7toXML_Click(object sender, EventArgs e) { string hl7Msg = this.textBoxSourceXml.Text.Trim(); string xmlMsg = ""; XMLTransformer t = XMLTransformer.CreateFromFile(this.textBoxXSLTPath.Text.Trim(), _log); if (t.TransformString(hl7Msg, ref xmlMsg, XSLTExtensionTypes.None)) { this.textBoxXmlMsg.Text = xmlMsg; } else { _log.Write("Transforming fialed."); } }
public static string[] Transform(XMLTransformer transformer, List <XmlNode> nodeList) { if (transformer == null || nodeList == null) { return(null); } List <string> list = new List <string>(); foreach (XmlNode node in nodeList) { string outXML = ""; string inXML = node.OuterXml; if (transformer.TransformString(inXML, ref outXML)) { list.Add(outXML); } } return(list.ToArray()); }
private void Form1_Load(object sender, EventArgs e) { _ieCtrlGC = new IEControler(this, this.textBoxGCXml, this.checkBoxGC, true); _ieCtrlIn = new IEControler(this.panelIn, this.textBoxInXML, this.checkBoxIn, true); _ieCtrlOut = new IEControler(this.panelOut, this.textBoxOutXML, this.checkBoxOut, true); _transformer = XMLTransformer.CreateFromFile(Program.XSLFileName); if (_transformer == null) { MessageBox.Show(XMLTransformer.LastErrorInfor); } _transformerOut = XMLTransformer.CreateFromFile(Program.XSLFileNameOut); if (_transformerOut == null) { MessageBox.Show(XMLTransformer.LastErrorInfor); } using (StreamReader sr = File.OpenText(Program.XMLFileName)) { this.textBoxInXML.Text = sr.ReadToEnd(); } }
private void buttonTransformOut_Click(object sender, EventArgs e) { XMLTransformer transformer = XMLTransformer.CreateFromFile(this.textBoxXSLPathOut.Text.Trim()); if (transformer == null) { MessageBox.Show(XMLTransformer.LastErrorInfor); return; } this.listBoxItemOut.Items.Clear(); List <DataSet> dsList = new List <DataSet>(); foreach (DataSetWrapper ds in this.listBoxDataSetOut.Items) { dsList.Add(ds.DataSet); } string[] strList = Transform(transformer, dsList); foreach (string str in strList) { this.listBoxItemOut.Items.Add(str); } }
private static string[] Transform(XMLTransformer transformer, List <DataSet> dataSetList) { if (transformer == null || dataSetList == null) { return(null); } List <string> resultList = new List <string>(); foreach (DataSet ds in dataSetList) { StringBuilder sb = new StringBuilder(); StringWriter sw = new StringWriter(sb); ds.WriteXml(sw); string xml = sb.ToString(); string str = ""; if (transformer.TransformString(xml, ref str)) { resultList.Add(str); } } return(resultList.ToArray()); }
private void buttonTransform_Click(object sender, EventArgs e) { XMLTransformer transformer = XMLTransformer.CreateFromFile(this.textBoxXSLPath.Text.Trim()); if (transformer == null) { MessageBox.Show(XMLTransformer.LastErrorInfor); return; } this.listBoxDataSet.Items.Clear(); List <XmlNode> list = new List <XmlNode>(); foreach (XmlNode node in this.listBoxItem.Items) { list.Add(node); } string[] xmlList = Transform(transformer, list); foreach (string xml in xmlList) { this.listBoxDataSet.Items.Add(xml); } }
private bool _entity_OnRequest(string receiveData, ref string sendData) { //receiveData = SocketHelper.DeleteEOF(receiveData, _entity.Config.ReceiveEndSign); //sendData = receiveData.Replace('#', '$'); //return; //using (StreamWriter sw = File.CreateText("d:\\msg.txt")) //{ // sw.Write(receiveData); //} string msgContent = XIMServerHelper.GetMessageContent(receiveData); if (msgContent == null || msgContent.Length < 1) { string strErrMsg = "Request message does not exist in request data"; Program.Log.Write(LogType.Warning, strErrMsg, XIMServerHelper.ModuleName); sendData = XIMServerHelper.GetResponseFailed(XIMTransformHelper.GetTransactionID(), strErrMsg, Program.ConfigMgt.Config.SocketConfig); return(false); } string strName = ""; string strQualifier = ""; string strTransactionID = ""; XIMInboundMessage msgConfig = XIMServerHelper.GetMessageConfiguration(msgContent, ref strName, ref strQualifier, ref strTransactionID); if (msgConfig == null) { string strErrMsg = "Cannot find mapping rule configuration for current message (Name:" + strName + ", Qualifier:" + strQualifier + ")."; Program.Log.Write(LogType.Warning, strErrMsg, XIMServerHelper.ModuleName); sendData = XIMServerHelper.GetResponseFailed(strTransactionID, strErrMsg, Program.ConfigMgt.Config.SocketConfig); return(false); } XMLTransformer transformer = XMLTransformer.CreateFromMessage(msgConfig); if (msgConfig == null) { string strErrMsg = "Cannot find mapping XSL file for current message (XSL File:" + msgConfig.XSLFileName + ")."; Program.Log.Write(LogType.Warning, strErrMsg, XIMServerHelper.ModuleName); sendData = XIMServerHelper.GetResponseFailed(strTransactionID, strErrMsg, Program.ConfigMgt.Config.SocketConfig); return(false); } List <XmlNode> nodeList = new List <XmlNode>(); XIMServerHelper.SplitItem(nodeList, msgContent); Program.Log.Write(nodeList.Count.ToString() + " XIM Item(s) are found in request message", XIMServerHelper.ModuleName); XIMServerHelper.SplitProcedureStep(nodeList); Program.Log.Write(nodeList.Count.ToString() + " XIM Item(s) splited by SPS are found in request message", XIMServerHelper.ModuleName); if (nodeList.Count > 0) { string[] dataSetXmlList = XIMServerHelper.Transform(transformer, nodeList); DataSet dataSet = XIMServerHelper.CreateDataSet(dataSetXmlList); if (dataSet == null) { string strErrMsg = "Failed to transform to Data Set for current message."; Program.Log.Write(LogType.Warning, strErrMsg, XIMServerHelper.ModuleName); sendData = XIMServerHelper.GetResponseFailed(strTransactionID, strErrMsg, Program.ConfigMgt.Config.SocketConfig); return(false); } if (_service.SaveData(msgConfig.Rule, dataSet)) { Program.Log.Write("Save to GC Gateway database succeeded."); sendData = XIMServerHelper.GetResponseSuccess(strTransactionID, Program.ConfigMgt.Config.SocketConfig); return(true); } else { string strErrMsg = "Save to GC Gateway database failed."; Program.Log.Write(LogType.Error, strErrMsg, XIMServerHelper.ModuleName); sendData = XIMServerHelper.GetResponseFailed(strTransactionID, strErrMsg, Program.ConfigMgt.Config.SocketConfig); return(false); } } return(false); }
private void _timer_Elapsed(object sender, ElapsedEventArgs e) { _timer.Stop(); Program.Log.Write("# Timer tick begin.", XIMClientHelper.ModuleName); int index = 0; foreach (XIMOutboundMessage msg in Program.ConfigMgt.Config.Messages) { try { index++; List <XIMWrapper> resultList = null; string strPrefix = "(" + index.ToString() + ") "; Program.Log.Write(strPrefix + "Begin processing message (" + msg.GWEventType.ToString() + ") to (" + msg.HL7EventType.ToString() + ").", XIMClientHelper.ModuleName); #region Data Processing DataSet dataSet = _service.RequestData(msg.Rule, null); if (dataSet == null) { Program.Log.Write(LogType.Warning, "Query data from GC Gateway database failed."); } else { List <DataSet> splitedDataSet = XIMClientHelper.SplitDataSet(dataSet); if (splitedDataSet == null || splitedDataSet.Count < 1) { Program.Log.Write(LogType.Warning, "No record found in GC Gateway database query result."); } else { Program.Log.Write(strPrefix + "Query data from GC Gateway database succeeded (Record count:" + splitedDataSet.Count.ToString() + ")."); XMLTransformer transformer = XMLTransformer.CreateFromMessage(msg); if (transformer == null) { Program.Log.Write(LogType.Warning, "Cannot find mapping XSL file for current message (XSL File:" + msg.XSLFileName + ")."); } else { resultList = XIMClientHelper.Transform(transformer, splitedDataSet); if (resultList == null || resultList.Count < 1) { Program.Log.Write(LogType.Warning, "Transform from DataSet xml to XIM xml failed (XSL File:" + msg.XSLFileName + ")."); } else { Program.Log.Write(strPrefix + "Transform from DataSet xml to XIM xml succeeded (Document count:" + resultList.Count.ToString() + ")."); if (resultList.Count > 1 && Program.ConfigMgt.Config.EnableDataMerging) { int pkIndex = Program.ConfigMgt.Config.DataMergingPKIndex; resultList = XIMClientHelper.MergeProcedureStep(resultList, pkIndex); if (resultList == null || resultList.Count < 1) { Program.Log.Write(LogType.Warning, "SPS merging failed (PK Index:" + pkIndex.ToString() + ")."); } else { Program.Log.Write(strPrefix + "SPS merging succeeded (PK Index:" + pkIndex.ToString() + ") (Document count:" + resultList.Count.ToString() + ")."); } } else { Program.Log.Write(strPrefix + "Skip SPS merging."); } } } } } #endregion #region Data Sending if (resultList == null || resultList.Count < 1) { Program.Log.Write(LogType.Warning, "No availiable XIM document, skip data sending."); } else { int ximIndex = 1; Program.Log.Write(strPrefix + "Sending XIM document..."); foreach (XIMWrapper xim in resultList) { string ximLogIndex = "(" + (ximIndex++).ToString() + "/" + resultList.Count.ToString() + ")"; bool result = false; if (Program.ConfigMgt.Config.OutboundToFile) { result = !XIMClientHelper.SaveToFile(Program.ConfigMgt.Config, xim.XIMDocument); } else { SocketResult res = SocketHelper.SendData(Program.ConfigMgt.Config.SocketConfig, xim.XIMDocument); result = (res == null || res.Type != SocketResultType.Success); } if (result) { Program.Log.Write(LogType.Warning, "Send XIM document failed. " + ximLogIndex); } else { Program.Log.Write(strPrefix, "Send XIM document succeeded. " + ximLogIndex); if (_service.DischargeData(xim.GUIDList.ToArray())) { Program.Log.Write(strPrefix, "Discharge data succeeded. " + ximLogIndex); } else { Program.Log.Write(LogType.Warning, "Discharge data failed. " + ximLogIndex); } } } Program.Log.Write(strPrefix + "Send XIM document completed."); } #endregion Program.Log.Write(strPrefix + "End processing message.", XIMClientHelper.ModuleName); } catch (Exception err) { Program.Log.Write(err); } } Program.Log.Write("# Timer tick end.", XIMClientHelper.ModuleName); _timer.Start(); }