- Codeproject.EventBroker.zip
- Codeproject.EventBroker
- Codeproject.EventBroker.Common
- Codeproject.EventBroker.Contracts
- Codeproject.EventBroker.Host
- Codeproject.EventBroker.Service
- Codeproject.EventBroker.sln
- Codeproject.EventBroker.suo
- Codeproject.EventBroker.TestMessagePublisher
- Codeproject.EventBroker.WebUI
- Lib
- Apache
- log4net
- 1.2.10.0
- Castle
- 1.2.0.6623
- Castle.Components.Binder.dll
- Castle.Components.Validator.dll
- Castle.Core.dll
- Castle.DynamicProxy2.dll
- Castle.MicroKernel.dll
- Castle.Windsor.dll
- Microsoft
- SignalR
- SignalR.dll
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Codeproject.EventBroker.Service.Services.Contracts;
using Codeproject.EventBroker.Contracts.Data;
using System.Net;
using Codeproject.EventBroker.Common;
using System.Xml.Linq;
namespace Codeproject.EventBroker.Service.Utils.Implementation
{
public class XmlParser : IXmlParser
{
private IGeoLocator geoLocator;
public XmlParser(IGeoLocator geoLocator)
{
this.geoLocator = geoLocator;
}
public RealTimeEventMessage ParseRawMsmqXml(string messageBody)
{
//<realtimeEvent>
// <originatingIp></originatingIp>
// <eventName>ClientDealEvent</eventName>
// <entityIdType>ClientDeal</entityIdType>
// <description>Someone bought something</description>
// <date>2012-01-16T15:31:31</date>
// <additionalData></additionalData>
//</realtimeEvent>
try
{
RealTimeEventMessage info = new RealTimeEventMessage();
XElement xelement = XElement.Parse(messageBody);
string ipAddress = GetSafeString(xelement, "originatingIp");
if (!string.IsNullOrEmpty(ipAddress))
{
info.Location = geoLocator.ObtainLocationForIPAddress(ipAddress);
}
info.EventName = GetSafeString(xelement, "eventName");
info.EntityIdType = GetSafeString(xelement, "entityIdType");
info.Description = GetSafeString(xelement, "description").Replace("\n\n", "\n\r");
info.Date = GetSafeDate(xelement, "date");
info.AdditionalData = GetSafeString(xelement, "additionalData");
return info;
}
catch (Exception ex)
{
LogManager.Log.Error(ex);
return null;
}
}
public static Int32 GetSafeInt32(XElement root, string elementName)
{
try
{
XElement element = root.Elements().Where(node => node.Name.LocalName == elementName).Single();
return Convert.ToInt32(element.Value);
}
catch
{
return 0;
}
}
private static DateTime? GetSafeDate(XElement root, string elementName)
{
try
{
XElement element = root.Elements().Where(node => node.Name.LocalName == elementName).Single();
return DateTime.Parse(element.Value);
}
catch
{
return null;
}
}
public static String GetSafeString(XElement root, string elementName)
{
try
{
XElement element = root.Elements().Where(node => node.Name.LocalName == elementName).Single();
return element.Value;
}
catch
{
return String.Empty;
}
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I currently hold the following qualifications (amongst others, I also studied Music Technology and Electronics, for my sins)
- MSc (Passed with distinctions), in Information Technology for E-Commerce
- BSc Hons (1st class) in Computer Science & Artificial Intelligence
Both of these at Sussex University UK.
Award(s)
I am lucky enough to have won a few awards for Zany Crazy code articles over the years
- Microsoft C# MVP 2016
- Codeproject MVP 2016
- Microsoft C# MVP 2015
- Codeproject MVP 2015
- Microsoft C# MVP 2014
- Codeproject MVP 2014
- Microsoft C# MVP 2013
- Codeproject MVP 2013
- Microsoft C# MVP 2012
- Codeproject MVP 2012
- Microsoft C# MVP 2011
- Codeproject MVP 2011
- Microsoft C# MVP 2010
- Codeproject MVP 2010
- Microsoft C# MVP 2009
- Codeproject MVP 2009
- Microsoft C# MVP 2008
- Codeproject MVP 2008
- And numerous codeproject awards which you can see over at my blog
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.