Чтение данных с 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 |
|
| |