Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
04.02.2014, 22:54
|
|||
---|---|---|---|
|
|||
Работа с XML из c# для перловика |
|||
#18+
Обычно, если я что-то админю, то это линуха или MSSQL. И обычно для задач администрирования хостов у меня есть perl. Но в этот раз помимо того, что приходится решать задачу на Win, так еще и в итоге нужно собрать .exe для вызова из командной строки. Поскольку для подобных задач в тренде нынче c# (и потому, что мне давно хотелось его пощупать), решать задачу хочу на нем. Возьмем такой XML: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
1. С точки зрения Perl мы можем легко и быстро (спасибо модулям) преобразовать этот XML во внутреннюю структуру данных. Так: Код: perl 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29.
В итоге в $ref возвращается содержимое XML в виде структуры данных perl (массивы [value0, value1, ..., valueN] и хеши {key1 => value1, ..., keyN => valueN}: Код: perl 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
2. Если нам нужно значение GUID из XML - это тоже просто: Код: perl 1.
3. Аналогично присвоив $ref->{'Info'}->{'Guid'} нужное значение мы можем поменять значение GUID в XML: Код: perl 1. 2. 3.
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
Вот эти 3 пункта достаточно просты в Perl, но я так не смог найти простой реализации того на c#, прошу помощи у сообщества. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.02.2014, 05:58
|
|||
---|---|---|---|
|
|||
Работа с XML из c# для перловика |
|||
#18+
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50.
Консольный вывод: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.02.2014, 06:00
|
|||
---|---|---|---|
|
|||
Работа с XML из c# для перловика |
|||
#18+
P.S. Перл для windows вполне себе тоже существует: http://www.perl.org/get.html#win32 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.02.2014, 17:55
|
|||
---|---|---|---|
Работа с XML из c# для перловика |
|||
#18+
On1yMe, в дотнете есть несколько способов работы с xml. Класс XmlDocument (пример с которым привёл Сон Веры Павловны) - он реализует модель W3C DOM - она должна быть знакома каждому веб-программисту. Классы XDocument/XElement - великий и ужасный LINQ, о котором, вероятно, слышали все, даже никогда не работавшие с технологиями .NET и вообще MS. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Также можно работать с набором классов, используя сериализацию-десериализацию. Для приведённого xml напишем следующие классы: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.
Прочитать данные в них можно так: Код: c# 1. 2. 3. 4. 5. 6. 7.
Т. к. C# статически типизированный, то приходится заранее создавать эти классы. В динамике, конечно, проще. Этот подход удобен тем, что мы получаем строго типизированные классы - это даёт автоподсказки в IDE при вводе кода, избавляет от случайных опечаток в строковых значениях имён узлов и т. п. Можно не писать классы вручную, а воспользоваться утилитой xsd.exe (входит в состав Visual Studio): скармливаем ей данный xml, получаем схему xsd, далее получаем набор классов (с кучей сгенерированных атрибутов). Есть и другие способы: потоковый api, классы для использования xslt, загрузка xml в датасеты (если данные представляют табличные данные), использование скомпилированных xpath-выражений... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
06.02.2014, 10:34
|
|||
---|---|---|---|
Работа с XML из c# для перловика |
|||
#18+
Сон Веры ПавловныP.S. Перл для windows вполне себе тоже существует: http://www.perl.org/get.html#win32 Использую strawberryperl , без проблем поставил XML::LibXML, XML::LibXSLT (даже под х64). 2On1yMe, а почему именно exe фаил, в чем различие запуска из командной строки в linux и windows? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=14&mobile=1&tid=1332399]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
73ms |
get topic data: |
15ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 190ms |
0 / 0 |