public void saveChannelsMetadata(ref ChannelsBundle _channelsBoundle, ReportTypes _reportType) { XDocument xdoc = getChannelsMetadata(ref _channelsBoundle); switch (_reportType) { case ReportTypes.JSON: break; case ReportTypes.XML: //Сохраняем xml-документ в файл xdoc.Save("ChannelsMetadata.xml"); break; case ReportTypes.HTML: //создаем объект файла стилей xsl XslCompiledTransform xslt = new XslCompiledTransform(); //заполняем его из файла xslt.Load(STYLESHEET_URI_STRING); //создаем обект записи, указываем ему имя выходного файла XmlTextWriter xmlTextWriter = new XmlTextWriter("ChannelsMetadata.html", null); //устанавливаем сохранение форматирования xmlTextWriter.Formatting = Formatting.Indented; //запускаем трансформацию с выводом в файл, который можно будет открыть в MS Word using (var xmlReader = xdoc.CreateReader()) { xslt.Transform(xmlReader, xmlTextWriter); } Console.WriteLine("Receive an HTML file!"); break; default: break; } }
public XDocument getChannelsMetadata(ref ChannelsBundle _ChannelsBundle) { //Корневой узел-элемент XElement root = new XElement("bundle"); //Элемент - коллекция каналов XElement channels = new XElement("channels"); //Число каналов int channelsLength = _ChannelsBundle.length(); //Сколько каналов - столько дочерних элементов //добавляем в корневой элемент for (int i = 0; i < channelsLength; i++) { XElement channel = new XElement("channel"); //Первый дочерний узел в элементе "канал" - атрибут "номер канала" channel.SetAttributeValue("number", _ChannelsBundle.numbersArray[i]); //Второй дочерний узел в элементе "канал" - элемент "усиление канала" XElement amp = new XElement("amplification"); amp.Add(_ChannelsBundle.ampsArray[i]); channel.Add(amp); // Определяем максимальное значение амплитуды сигнала из i-го канала, //заворачиваем в узел-элемент //и присоединяем его к текущему формируемому узлу channel XElement max = new XElement("max"); max.Add(_ChannelsBundle[i].dataArrayList.ToArray().Max()); channel.Add(max); // Определяем минимальное значение амплитуды сигнала из i-го канала, //заворачиваем в узел-элемент //и присоединяем его к текущему формируемому узлу channel XElement min = new XElement("min"); min.Add(_ChannelsBundle[i].dataArrayList.ToArray().Min()); channel.Add(min); //Добавляем элемент "канал" в элемент-коллекцию каналов channels.Add(channel); } //Создаем узел-элемент с информацией о частоте XElement frequency = new XElement("frequency"); frequency.Add(_ChannelsBundle.frequency); //...и добавляем его корню root.Add(frequency); //также в корень добавляем элемент-коллекцию элементов каналов root.Add(channels); //Создаем и возвращаем объект xml-документа с заголовком и корневым элементом return(new XDocument(new XDeclaration("1.0", "UTF-8", "yes"), root)); }
public XDocument getChannelsMetadata(ref ChannelsBundle _ChannelsBundle) { //Корневой узел-элемент XElement root = new XElement("bundle"); //Элемент - коллекция каналов XElement channels = new XElement("channels"); //Число каналов int channelsLength = _ChannelsBundle.length(); //Сколько каналов - столько дочерних элементов //добавляем в корневой элемент for (int i = 0; i < channelsLength; i++) { XElement channel = new XElement("channel"); //Первый дочерний узел в элементе "канал" - атрибут "номер канала" channel.SetAttributeValue("number", _ChannelsBundle.numbersArray[i]); //Второй дочерний узел в элементе "канал" - элемент "усиление канала" XElement amp = new XElement("amplification"); amp.Add(_ChannelsBundle.ampsArray[i]); channel.Add(amp); //Третий дочерний узел в элементе "канал" - элемент "данные" XElement data = new XElement("data"); foreach (var itemValue in _ChannelsBundle[i].dataArrayList) { XElement itemElement = new XElement("item"); itemElement.Add(itemValue); data.Add(itemElement); } channel.Add(data); //Добавляем элемент "канал" в элемент-коллекцию каналов channels.Add(channel); } //Создаем узел-элемент с информацией о частоте XElement frequency = new XElement("frequency"); frequency.Add(_ChannelsBundle.frequency); //...и добавляем его корню root.Add(frequency); //также в корень добавляем элемент-коллекцию элементов каналов root.Add(channels); //Создаем и возвращаем объект xml-документа с заголовком и корневым элементом return(new XDocument(new XDeclaration("1.0", "UTF-8", "yes"), root)); }
public ChannelsBundle getChannelsMetadata(String _path) { XmlDocument xmlDocument = new XmlDocument(); xmlDocument.Load(_path); if (validateChannelsMetadataXML(xmlDocument)) { mFrequency = Int32.Parse(xmlDocument.GetElementsByTagName("frequency")[0].InnerText); //Console.WriteLine(mFrequency); XmlNode channelsNode = xmlDocument.GetElementsByTagName("channels")[0]; if (channelsNode.HasChildNodes) { mChannelsCount = channelsNode.ChildNodes.Count; //Console.WriteLine(mChannelsCount); mNumbersArray = new int[mChannelsCount]; mAmpsArray = new int[mChannelsCount]; mChannelArrayList = new ArrayList(mChannelsCount); int channelNodeIdx = 0; foreach (XmlNode channelNode in channelsNode) { mNumbersArray[channelNodeIdx] = Int32.Parse(channelNode.Attributes["number"].InnerText); mAmpsArray[channelNodeIdx] = Int32.Parse(channelNode.ChildNodes[0].InnerText); Channel newChannel = new Channel(mNumbersArray[channelNodeIdx], mAmpsArray[channelNodeIdx]); foreach (XmlNode item in channelNode.ChildNodes[1].ChildNodes) { newChannel.dataArrayList.Add(item.InnerText); } mChannelArrayList.Add(newChannel); channelNodeIdx++; } } mChannelsBundle = new ChannelsBundle(mNumbersArray, mAmpsArray, mFrequency); mChannelsBundle.channelArrayList = mChannelArrayList; return(mChannelsBundle); } else { throw new Exception("Inavid xml document!"); } }
public void persistChannels(ChannelsBundle _сhannelsBoundle) { throw new NotImplementedException(); }
static void Main(string[] args) { //Channel channel1 = new Channel(1, 0); //Channel channel2 = new Channel(2, 0); //channel1.addDataItem(0); //channel1.addDataItem(1.01); //channel1.addDataItem(1.02); //channel1.addDataItem(1.03); //foreach (double dataItem in channel1.getDataArray()) //{ // Console.WriteLine(dataItem); //} //ChannelsBundle ChannelsBundle1 = new ChannelsBundle(null, null, 1500); //channel2.addDataItem(0.001); //channel2.addDataItem(1.015); //channel2.addDataItem(1.025); //channel2.addDataItem(1.035); //ChannelsBundle1[0] = channel1; //ChannelsBundle1[1] = channel2; //foreach (Channel channel in ChannelsBundle1) //{ // foreach (double dataItem in channel.getDataArray()) // { // Console.WriteLine(dataItem); // } //} //Filters filters1 = Filters.Batterwort; //Filters filters2 = Filters.Chebishev; //Console.WriteLine(filters1 < filters2); //DataFileFacade dataFileFacade = new DataFileFacade(DataFileTypes.OldDataFile); //dataFileFacade.getChannels(); //dataFileFacade.setDAOType(DataFileTypes.NewDataFile); //dataFileFacade.getChannels(); //dataFileFacade.setDAOType(DataFileTypes.OldDataFile); //dataFileFacade.getChannels(); //Mock<IChannelsBundle> mock = new Mock<IChannelsBundle>(); //mock.Setup(m => m.channelArray).Returns( // new Channel[]{ // //new Channel{dataArray = new double?[3]{1, 2, 3}} // //,new Channel{dataArray = new double?[3]{0, 1, 2}} // new Channel{dataArrayList = (new ArrayList(){1, 2, 3})} // ,new Channel{dataArrayList = new ArrayList(){0, 1, 2}} // } //); //foreach (Channel channel in mock.Object.channelArray.AsEnumerable()) //{ // foreach (double dataItem in channel.getDataArray()) // { // Console.WriteLine(dataItem); // } //} //const Int32 count = 10000000; //using (new OperationProfiler("Channel<T>")) //{ // gen.Channel<double> channel1 = new gen.Channel<double>(1, 0); // for (Int32 n = 0; n < count; n++) // { // channel1.addDataItem(n); // } // channel1 = null; // для гарантированного выполнения сборки мусора //} //using (new OperationProfiler("Channel")) //{ // Channel channel1 = new Channel(1, 0); // for (Int32 n = 0; n < count; n++) // { // channel1.addDataItem(n); // } //} //gen.Channel<double> channel1 = new gen.Channel<double>(1, 0); //Channel channel2 = new Channel(); //channel2 = null; /*Чтение бинарных файлов*/ /*String filePath = @"D:/Temp/10f"; * * ParamsReader paramsReader = new ParamsReader(); * List<gen.Channel<double>> channelsArrayList = * paramsReader.getParams(filePath + ".prm"); * Console.WriteLine(paramsReader.Count + " " + paramsReader.Frequency + "\n"); * foreach (gen.Channel<double> channel in channelsArrayList) * { * Console.WriteLine(channel.number + " " + channel.amp); * }*/ //DataReader dataReader = new DataReader(); //dataReader.getData(@"D:/Temp/10f" + ".dat", ref channelsArrayList); //foreach (double dataItem in channelsArrayList[1].getDataArray()) //{ // Console.WriteLine(dataItem); //} //*Запись метаданных в XML-файл*/ Channel channel1 = new Channel(1, 0); Channel channel2 = new Channel(2, 0); channel1.addDataItem(0); channel1.addDataItem(1.01); channel1.addDataItem(1.02); channel1.addDataItem(1.03); channel1.addDataItem(1.51); channel1.addDataItem(1.22); channel1.addDataItem(1.03); channel2.addDataItem(0.001); channel2.addDataItem(1.015); channel2.addDataItem(1.025); channel2.addDataItem(1.035); channel2.addDataItem(1.115); channel2.addDataItem(1.095); channel2.addDataItem(1.035); int[] numbersArray = new int[] { channel1.number, channel2.number }; int[] ampsArray = new int[] { channel1.amp, channel2.amp }; ChannelsBundle ChannelsBundle1 = new ChannelsBundle(numbersArray, ampsArray, 1500); ChannelsBundle1[0] = channel1; ChannelsBundle1[1] = channel2; ExportXML exportXML = new ExportXML(); exportXML.saveChannelsMetadata(ref ChannelsBundle1, ReportTypes.XML); ImportXML importXML = new ImportXML(); ChannelsBundle ChannelsBundle2 = importXML.getChannelsMetadata(@"ChannelsMetadata.xml"); Console.WriteLine("frequency = {0}", ChannelsBundle2.frequency); foreach (Channel channel in ChannelsBundle2) { Console.WriteLine("number = {0}; amplification = {1}", channel.number, channel.amp); } Console.ReadLine(); /*Чтение бинарных файлов C++*/ /*String filePath = @"D:/Temp/10f"; * * ParamsReader paramsReader = new ParamsReader(); * List<gen.Channel<double>> channelsArrayList = * paramsReader.getParams(filePath + ".prm"); * Console.WriteLine(paramsReader.Count + " " + paramsReader.Frequency + "\n"); * foreach (gen.Channel<double> channel in channelsArrayList) * { * Console.WriteLine(channel.number + " " + channel.amp); * }*/ }