public XPathNodeIterator GetLocalSignals(XPathNodeIterator rootNode, int testNo)
{
int counter = 1;
XPathNodeIterator navigator = null;
XmlDocument xPathDocument = new XmlDocument();
XmlElement xmlElement = xPathDocument.CreateElement("signals");
xPathDocument.AppendChild(xmlElement);
XmlNamespaceManager mngr = new XmlNamespaceManager(new NameTable());
List<string> varList = new List<string>();
foreach (XPathNavigator root in rootNode)
{
XPathNodeIterator statements = root.Select( string.Format("//*/statement[@test_number={0}]", testNo) );
foreach (XPathNavigator statement in statements)
{
string refId = statement.GetAttribute( "refid", "" );
if (!String.IsNullOrWhiteSpace( refId ))
{
XPathNodeIterator signals =
root.Select( string.Format( "//*[@id={0}]/signal_component/atlas/noun", int.Parse(refId) ) );
foreach (XPathNavigator signal in signals)
{
string type = signal.GetAttribute( "type", "" );
string resource = signal.GetAttribute( "resource", "" );
if (!varList.Contains( type ))
{
varList.Add( type );
XmlElement el = xPathDocument.CreateElement( "signal" );
el.SetAttribute( "type", type );
el.SetAttribute( "resource", resource );
el.SetAttribute( "id", string.Format( "ls{0}-{1}", testNo, counter++ ) );
xmlElement.AppendChild( el );
}
}
}
}
}
XPathNavigator nav = xPathDocument.CreateNavigator();
navigator = nav.Select("/", mngr);
return navigator;
}