| 
				
				Чтение данных с Xml
				 | 
 | 
| beril | Дата: Четверг, 27 Марта 2014, 14:50 | Сообщение # 1 |  
 
Я не ленивый, я — энергосберегающий 
Сейчас нет на сайте 
 
 | В столкнулся с такой проблемой. Сохранил записал значение transform.position в xml файл.   Атрибут с записанными данными выглядит так:   Код    PositionTran="(-2.4, 23.0, -4.3)"        Но вот столкнулся с проблемой, как потом их файла прочитать это значение и занести в переменную? Я конечно как настоящий программист обошел все костылями   и просто записал координаты x, y, z по отдельности и потом их считывал. Но всетаки хочу работать как нужно и поэтому меня интересует как занести эти данные из атрибута в переменную.   ЯП C# 
   Ну и 2 вопрос: есть что то почитать или посмотреть о работе с ini файлами.   Буду благодарен за помощь
 
         Накодил? Убери за собой!   Инвентарь в Unity(UI)   Инвентарь в Unity(GUI) 
 |  
| 
 | 
 |    | 
| Rvach | Дата: Четверг, 27 Марта 2014, 15:36 | Сообщение # 2 |  
 
частый гость 
Сейчас нет на сайте 
 
 | Цитата beril (  )  Но вот столкнулся с проблемой, как потом их файла прочитать это значение и занести в переменную?     Код     string str = "(-2.4, 23.0, -4.3)"; //например считали атрибут в str    str=str.Replace("(","");   str=str.Replace(")","");   str=str.Replace(" ","");   string[] arr = str.Split(',');        А вообще надо бы это делать регулярками (regex), но так как я их <strike>очень слабо знаю</strike> не знаю пока так могу только такой топорный вариант предложить...
  Мой блог: rvach.blogspot.com
 |  
| 
 | 
 |    | 
| beril | Дата: Четверг, 27 Марта 2014, 15:54 | Сообщение # 3 |  
 
Я не ленивый, я — энергосберегающий 
Сейчас нет на сайте 
 
 | А как потом к float это все приравнять?
 
         Накодил? Убери за собой!   Инвентарь в Unity(UI)   Инвентарь в Unity(GUI) 
 |  
| 
 | 
 |    | 
| Rvach | Дата: Четверг, 27 Марта 2014, 16:29 | Сообщение # 4 |  
 
частый гость 
Сейчас нет на сайте 
 
 | Цитата beril (  )  А как потом к float это все приравнять?      Код        float x,y,z;       x = Convert.ToSingle(arr[0]);       y = Convert.ToSingle(arr[1]);       z = Convert.ToSingle(arr[2]);      
   Добавлено (27.03.2014, 16:23)   ---------------------------------------------   Но лучше вместо Convert использовать Parse, что бы не было неожиданных ошибок из-за неверного формата дробных чисел:   Код        x= float.Parse(arr[0],CultureInfo.InvariantCulture.NumberFormat);       y= float.Parse(arr[1],CultureInfo.InvariantCulture.NumberFormat);       z= float.Parse(arr[2],CultureInfo.InvariantCulture.NumberFormat);      
   Добавлено (27.03.2014, 16:29)   ---------------------------------------------   В итоге должно получиться как то так: 
   Код using System;   using System.Text.RegularExpressions;   using System.Globalization;   ... 
       string input = "(-2.4, 23.0, -4.3)"; 
       Regex reg = new Regex(@"[( )]");       string[] arr=reg.Replace(input, "").Split(','); 
       float x,y,z;                x= float.Parse(arr[0],CultureInfo.InvariantCulture.NumberFormat);       y= float.Parse(arr[1],CultureInfo.InvariantCulture.NumberFormat);       z= float.Parse(arr[2],CultureInfo.InvariantCulture.NumberFormat);     
  Мой блог: rvach.blogspot.com
 
 Сообщение отредактировал Rvach - Четверг, 27 Марта 2014, 16:30  |  
| 
 | 
 |    | 
| beril | Дата: Четверг, 27 Марта 2014, 18:13 | Сообщение # 5 |  
 
Я не ленивый, я — энергосберегающий 
Сейчас нет на сайте 
 
 | Спасибо 
   А насчет работы с ini файлами может кто, что то посоветовать?
 
         Накодил? Убери за собой!   Инвентарь в Unity(UI)   Инвентарь в Unity(GUI) 
 |  
| 
 | 
 |    | 
| Storm54 | Дата: Четверг, 27 Марта 2014, 22:09 | Сообщение # 6 |  
 
постоянный участник 
Сейчас нет на сайте 
 
 | Неужели так трудно написать свой класс для работы с ini файлами.   Читаешь построчно. Смотришь, если строка в квадратных скобках, то вытаскиваешь из этой строки название секции(просто отбрасываешь квадратные скобки)   Читаешь дальше. Если находим строку, в которой есть знак равно, то делим эту строку на ключ и значение и сохраняем их в какой-нибудь Код Dictionary<string,Dictionary<string,object>>  (так же можно проверить, не обнесена ли эта строка квадратными скобками, т.к. это может быть идентификатор секции)   В общем придерживаясь этого способа перебираешь весь файл.   Кода минут на 5. 
   А вообще, думаю, что есть куча примеров готового класса для C#.   Ищется все это практически мгновенно. float.Parse тоже ищется за считанные секунды.
 
 Сообщение отредактировал Storm54 - Четверг, 27 Марта 2014, 22:12  |  
| 
 | 
 |    |