private void ParseTreeStruct(DatapointElement element, string[][] source, int nodeLevel, int startIndex) { var lvl = 0; for (int i = startIndex; i < source.Length; i++) { for (int j = 0; j < source[i].Length; j++) //foreach (var l in source[i]) { var l = source[i][j]; var splited = l.Split(';'); var Name = splited[0]; var Type = (ElementType)int.Parse(splited[1]); if (Type == ElementType.DPEL_NONE) { lvl++; } else if (lvl < nodeLevel) { return; } else if (lvl == 0 && nodeLevel == 0) { //element = new DatapointElement(Type, Name); ParseTreeStruct(element, source, nodeLevel + 1, i + 1); } else if (lvl == nodeLevel && lvl != 0) { DatapointElement childElement; if (Type == ElementType.DPEL_TYPEREF) { j++; childElement = new DatapointElement(Type, Name, source[i][j].Split(';')[0]); } else { childElement = new DatapointElement(Type, Name); ParseTreeStruct(childElement, source, nodeLevel + 1, i + 1); } element.Add(childElement); } } lvl = 0; } }
//string[][] dpTypeGet(string dpType); public DatapointElement dpTypeGet(DatapointType dpType) { DatapointElement result = null; try { result = new DatapointElement(); var wResult = wccXmlRpcProxy.dpTypeGet(dpType.Name); ParseTreeStruct(result, wResult, 0, 0); } catch (Exception e) { Debugger.Write(e.Message); } return(result); }
public void Remove(DatapointElement element) { childElements.Remove(element); }
public void Add(DatapointElement element) { childElements.Add(element); }