in DiagManager/DiagClasses/XEvent.cs [67:123]
public Xevent(string EventElement)
{
//"<event package=\"sqlserver\" name=\"parallel_scan_range_returned\" version=\"11\" general=\"false\" detail=\"false\" replay=\"false\" />"
TextReader reader = new StringReader("<root>" + EventElement + "</root>");
XPathDocument doc = new XPathDocument(reader);
XPathNavigator rootnav = doc.CreateNavigator();
XPathNodeIterator iterEvent = rootnav.Select("/root/event");
int counter = 0;
while (iterEvent.MoveNext())
{
XPathNavigator eventNav = iterEvent.Current;
this.EnabledSQLVersion = Convert.ToInt32(eventNav.GetAttribute("version", ""));
this.Name = iterEvent.Current.GetAttribute("name", "");
foreach (Scenario evtTemp in XMgr.GlobalEventTemplateList)
{
string templateName = evtTemp.Name;
bool tempEnabled = Convert.ToBoolean(iterEvent.Current.GetAttribute(evtTemp.Name, ""));
if (tempEnabled)
{
EventOnlyTemplateList.Add(evtTemp);
}
}
this.Package = iterEvent.Current.GetAttribute("package", "");
// read and populate the field elements from eventfields section
TextReader readerFields = new StringReader("<root>" + EventElement + "</root>");
XPathDocument docFields = new XPathDocument(readerFields);
XPathNavigator navFields = docFields.CreateNavigator();
XPathNodeIterator iterFields = navFields.Select("//eventfields/field");
while (iterFields.MoveNext())
{
XPathNavigator navField = iterFields.Current;
EventFieldList.Add(new EventField(navField.OuterXml));
}
//read and poulate the action elements from eventactions section
TextReader readerActions = new StringReader("<root>" + EventElement + "</root>");
XPathDocument docActions = new XPathDocument(readerActions);
XPathNavigator navActions = docActions.CreateNavigator();
XPathNodeIterator iterActions = navActions.Select("//eventactions/action");
while (iterActions.MoveNext())
{
XPathNavigator navAction = iterActions.Current;
EventActionList.Add(new EventAction(navAction.OuterXml));
}
counter++;
}
if (counter != 1)
{
throw new ArgumentException("The XML passed for XEvent is not valid and should only contain one record");
}
}