.NET 4.x Найти XML элемент по значению атрибута и изменить другие атрибуты - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, документ состоит из объектов с тегом <object>. Мне необходимо перебирать объекты по тегу name в цикле и менять атрибуты lat и lon С XML работать не умею, заранее спасибо.
Листинг программы
  1. <?xml version="1.0" encoding="windows-1251"?>
  2. <system>
  3. <state change="0">
  4. <group name="efefefeffe">
  5. <object id="300010" phone="+72422424" name="кпкпкпкпкп" color="4194368" debug="0" eventparser="ccu6225_SMS_CSD_BAGIRA.xsl" statecolor="0" change="0" lat="56.282879" lon="36.675415" look_at="0" disable="0">
  6. <objectinfo>
  7. <picture src="d:\vcc\tmonitor\pictures\20070430175951_13304.bmp"/>
  8. <categoria>Недвижимость</categoria>
  9. <owner></owner>
  10. <otv>ООО </otv>
  11. <address></address>
  12. <model/>
  13. <regnum/>
  14. <comment>ПРЕЖДЕ ЧЕМ ПРЕДПРИНИМАТЬ КАКИЕ ЛИБО ДЕЙСТВИЯ Наименование оборудования: CCU 6225
  15. </comment>
  16. </objectinfo>
  17. <options static="1" lat="56.282879" lon="36.675415">
  18. <smsmodem name="modem2"/>
  19. <voicemodem name="modem2"/>
  20. <datamodem name="modem2"/>
  21. </options>
  22. <device type="CCU-6225S"/>
  23. <tag name="state" value="10" changetimeout="0" log="0" range="lo" lastts="2017-05-29 21:27:12" text="Снят с охраны" textcolor="0">
  24.  
  25. <state value="0" text="Состояние не известно" range="ll"/>
  26. <state value="50" text="Тревога снята"/>
  27. <state text="Под охраной" value="60"/>
  28. <state value="10" text="Снят с охраны" range="lo"/>
  29. <state value="100" text="Тревога" range="hh"/>
  30. <state value="99" text="Нет связи с объектом"/>
  31. </tag>
  32. <tag name="linkstatus" value="0" changetimeout="0" log="0" lastts="2007-06-30 16:15:37" text="Состояние связи неизвестно" range="ll">
  33. <ll value="0" text="Состояние связи неизвестно"/>
  34. <lo value="1" text="Нет связи с объектом"/>
  35. </tag>
  36. <commands><command name="Опрос состояния" signal="ASK" type="CONTEXT" icon="C:\Program Files\xampp\htdocs\tmonitor\icons\none.bmp"/>
  37. <command name="Сброс тревоги" signal="RESET" type="CONTEXT" icon="C:\Program Files\xampp\htdocs\tmonitor\icons\none.bmp"/></commands>
  38. <tag name="mytimer" value="0" log="0" timer="0" lastts="2016-07-16 01:16:06" range="" text="" lastsms="22.08.17.01:17">
  39. <hi value="23000"/>
  40. </tag>
  41. <tag name="220" value="1" lastts="2017-05-29 21:26:45" range=""/>
  42. <tag name="Status" value="0" lastts="2015-06-22 11:49:20" range="">
  43. <Status value="0" text="Снят с охраны" range="lo"/>
  44. <Status value="1" text="Стоит под охраной" range="hl"/>
  45. <Status value="3" text="Нет 220" range="ll"/><text/>
  46. </tag>
  47. <tag name="WorkTime" value="0" text="Открыт/Рабочее время" use="0" lastts="2015-06-22 12:50:00" range="" R="12:50:00" N="12:04:00">
  48. <WorkTime value="0" text="Открыт/Рабочее время"/>
  49. <WorkTime value="1" text="Закрыт/Не рабочее время"/>
  50. </tag>
  51. <tag name="RTimer" value="24" text="ТАЙМЕР часы"/><tag name="AKB" value="100%" lastts="2017-05-30 01:17:30" range=""/></object>

Решение задачи: «.NET 4.x Найти XML элемент по значению атрибута и изменить другие атрибуты»

textual
Листинг программы
  1. string name2find = "кпкпкпкпкп";
  2.  
  3. XDocument xdoc = XDocument.Load("objects.xml");
  4. var xobject = xdoc.Root.XPathSelectElement("/system/state/group/object[@name='" + name2find + "']");
  5. if (xobject != null)
  6. {
  7.     xobject.Attribute("lat").Value += "0";
  8.     xobject.Attribute("lon").Value += "0";
  9. }
  10. xdoc.Save("objects.xml");

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.5 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы