|
|
|
Работа с 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#, прошу помощи у сообщества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 22:54 |
|
||
|
Работа с 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, 05:58 |
|
||
|
Работа с XML из c# для перловика
|
|||
|---|---|---|---|
|
#18+
P.S. Перл для windows вполне себе тоже существует: http://www.perl.org/get.html#win32 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 06:00 |
|
||
|
Работа с 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-выражений... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 17:55 |
|
||
|
Работа с XML из c# для перловика
|
|||
|---|---|---|---|
|
#18+
Сон Веры ПавловныP.S. Перл для windows вполне себе тоже существует: http://www.perl.org/get.html#win32 Использую strawberryperl , без проблем поставил XML::LibXML, XML::LibXSLT (даже под х64). 2On1yMe, а почему именно exe фаил, в чем различие запуска из командной строки в linux и windows? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2014, 10:34 |
|
||
|
|

start [/forum/topic.php?fid=14&tid=1332399]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 129ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...