Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.230.82] |
|
Сообщ.
#1
,
|
|
|
Уважаемые форумчане подскажите такой вопрос,
имеется файл iplir.conf (конфигурационный файл VipNet) например такой: Скрытый текст #commentary [id] id= 0x1a0e000d name= координатор2 filterdefault= pass ip= 192.0.2.9 ip= 192.0.2.10 tunnel= 192.0.2.201-192.0.2.202 to 192.0.2.201-192.0.2.202 firewallip= 192.0.2.11 port= 55777 proxyid= 0x00000000 usefirewall= off fixfirewall= off virtualip= 203.0.113.1 version= 3.0-670 #commentary [id] id= 0xffffffff name= Encrypted broadcasts filterdefault= drop filterudp= 137, 137, pass, any filterudp= 138, 138, pass, any filterudp= 68, 67, pass, any filterudp= 67, 68, pass, any filterudp= 2046, 0-65535, pass, recv filterudp= 2046, 2046, pass, send filterudp= 2048, 0-65535, pass, recv filterudp= 2050, 0-65535, pass, recv filterudp= 2050, 2050, pass, send [id] id= 0xfffffffe name= Main Filter filterdefault= pass [id] id= 0x1a0e000b name= administrator filterdefault= pass ip= 192.0.2.55 accessip= 203.0.113.2 firewallip= 192.0.2.6 port= 55777 proxyid= 0xfffffffe dynamic_timeout= 0 usefirewall= on virtualip= 203.0.113.2 version= 3.2-672 [id] id= 0x1a0e000c name= [comment] client1 filterdefault= pass ip= 192.0.2.7 accessip= 203.0.113.3 firewallip= 192.0.2.8 port= 55777 proxyid= 0xfffffffe dynamic_timeout= 0 usefirewall= on virtualip= 203.0.113.3 version= 0.3-2 [id] id= 0x1a0e000a name= coordinator1 filterdefault= pass ip= 192.0.2.51 ip= 192.0.2.3 accessip= 203.0.113.4 tunnel= 192.0.2.100-192.0.2.200 to 192.0.2.100-192.0.2.200 firewallip= 192.0.2.4 port= 55777 proxyid= 0x00000000 usefirewall= off virtualip= 198.51.100.4 version= 3.0-670 [adapter] name= eth1 ip= 192.0.2.9 allowtraffic= on type= internal [adapter] name= eth0 ip= 192.0.2.10 allowtraffic= on type= external [dynamic] dynamic_proxy= off firewallip= 192.0.2.11 port= 55777 forward_id= 0x00000000 always_use_server= off timeout= 25 [misc] packettype= 4.1 timediff= 7200 warnoldautosave= on client_pollinterval= 300 server_pollinterval= 900 iparponly= off ifcheck_timeout= 30 ipforwarding= on iscaggregate= on msg_compress_level= 9 mssdecrease= 0 ciphertype= gost [debug] debuglevel= 3 debuglogfile= syslog:daemon.debug [servers] server= 0x1a0e000a, coordinator1 [virtualip] startvirtualip= 203.0.113.1 endvirtualip= 203.0.113.4 maxvirtualip= 203.0.113.254 ; Do not delete or change the following line!!! startvirtualiphash= 0xABCDEF01 [visibility] default= auto количество секций [id] может достигать тысячи, вопрос : как переложить все секции [id] в таблицу т.е. текстовую вертикальную запись параметров преобразовать для чтения к такому виду Прикреплённый файл111.png (165 байт, скачиваний: 550) |
Сообщ.
#2
,
|
|
|
извините файл пустой оказался
прикрепляю новый Прикреплённый файл222.jpg (132,5 Кбайт, скачиваний: 547) |
Сообщ.
#3
,
|
|
|
Не ужели ни кто не в теме, подскажите кто нибудь, помогите хоть класс набрать под разбор секции
|
Сообщ.
#4
,
|
|
|
Цитата kms @ переложить все секции [id] в таблицу Какую таблицу? Конвертировать в табулированные строчки? (column1\tcolumn2\tcolumn3\tcolumn4) экспортировать в БД? (sql или иное) Записать в xls? Цитата kms @ Не ужели ни кто не в теме Скорее, тут просто не любят вопросы, которые заключаются в том, чтобы отвечающий написал за вас программу. У вас даже пояснений толковых по поводу вашего вопроса нет... |
Сообщ.
#5
,
|
|
|
Присоединяюсь к предыдушему ораторy. Какой тип таблицы?
Если нужна HTML таблица то XSLT, наверное, лучший двигатель. |
Сообщ.
#6
,
|
|
|
В какую таблицу без разницы , хоть в DataTAble , хоть в csv ,
у меня например сделано в dataGridView Скрытый текст private void Parsing2tabl() { string text = ""; using (StreamReader fs = new StreamReader(textBox1.Text, Encoding.GetEncoding(20866))) { int sID = 0; string[] sP; double number; while (true) { string temp = fs.ReadLine(); // Читаем строку из файла во временную переменную. if (temp == null || temp == "[adapter]" ) break; // Если достигнут конец файла, прерываем считывание. if (temp == "[id]" || temp == "[channel]")// Пишем { sID = dataGridView1.Rows.Add(); dataGridView1.Rows[sID].HeaderCell.Value = (sID+1).ToString() ; } if (temp != "[id]" && temp != "" && temp.Substring(0, 1) != "#") { sP = temp.Split('='); dataGridView1.Rows[sID].Cells[sP[0].Trim()].Value += sP[1]; } } } } но хотелось бы по настоящему классами |
Сообщ.
#7
,
|
|
|
using System; using System.IO; using System.Collections.Generic; namespace Sources { public class ItemID { private IDictionary<string,string> properties; public ItemID(int id, IDictionary<string,string> properties){ this->properties = properties; this->ID = id; } public int ID { get; set; } public string GetValue(string propertyName){ return this->properties[propertyName]; } public IDictionary<string,string> ToMap() { return this->properties; } } public class ParseHandler { public static IList<ItemID> ReadIds(string filename){ IList<ItemID> result = new List<ItemID>(); using (StreamReader stream = new StreamReader(filename, Encoding.GetEncoding(20866))) { string tmp; for(;;){ if((tmp = stream.ReadLine())==null){ break; } if(!tmp.contains("[id]")){ continue; } IDictionary<string,string> properties = new Dictionary<string,string>(); for(;;){ if((tmp = stream.ReadLine())==null || tmp.trim().length==0){ int id = int.Parse(properties["id"]); result.add(new ItemID(id, properties)); break; } if(!tmp.contains("=")){ throw Exception("Синтаксическая ошибка: '"+tmp+"'!"); } string[] data = tmp.split('='); string fieldName = data[0].trim(); string fieldValue = data[1].trim(); properties[fieldName] = fieldValue; } } } return result; } } } Соответственно, использовать можно так: foreach(ItemID item in ParseHandler.ReadIds("config_name.cfg")) { foreach(string field in item.ToMap().Keys){ System.Console.WriteLine(filed+"="+item.GetValue(field)+", "); } System.Console.WriteLine("\n"); } |
Сообщ.
#8
,
|
|
|
VisualProg что то пошло не так
|
Сообщ.
#9
,
|
|
|
Вообщем как то домучил этот вопрос если кому интересно исходники тут
|
Сообщ.
#10
,
|
|
|
где ? )))
|
Сообщ.
#11
,
|
|
|
Извиняюсь https://github.com/vovakms/ParserVipNet
Прикреплённый файлr1.png (75,78 Кбайт, скачиваний: 531) Добавлено файлик pscp.exe должен, лежать рядом с "Парсером" , я вместо dll-ки подключил exe-шник (утилитка копирования с файловой системы ext3/ext4) |