.NET 4.x Найти XML элемент по значению атрибута и изменить другие атрибуты - C#
Формулировка задачи:
Здравствуйте, документ состоит из объектов с тегом <object>. Мне необходимо перебирать объекты по тегу name в цикле и менять атрибуты lat и lon
С XML работать не умею, заранее спасибо.
<?xml version="1.0" encoding="windows-1251"?> <system> <state change="0"> <group name="efefefeffe"> <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"> <objectinfo> <picture src="d:\vcc\tmonitor\pictures\20070430175951_13304.bmp"/> <categoria>Недвижимость</categoria> <owner></owner> <otv>ООО </otv> <address></address> <model/> <regnum/> <comment>ПРЕЖДЕ ЧЕМ ПРЕДПРИНИМАТЬ КАКИЕ ЛИБО ДЕЙСТВИЯ Наименование оборудования: CCU 6225 </comment> </objectinfo> <options static="1" lat="56.282879" lon="36.675415"> <smsmodem name="modem2"/> <voicemodem name="modem2"/> <datamodem name="modem2"/> </options> <device type="CCU-6225S"/> <tag name="state" value="10" changetimeout="0" log="0" range="lo" lastts="2017-05-29 21:27:12" text="Снят с охраны" textcolor="0"> <state value="0" text="Состояние не известно" range="ll"/> <state value="50" text="Тревога снята"/> <state text="Под охраной" value="60"/> <state value="10" text="Снят с охраны" range="lo"/> <state value="100" text="Тревога" range="hh"/> <state value="99" text="Нет связи с объектом"/> </tag> <tag name="linkstatus" value="0" changetimeout="0" log="0" lastts="2007-06-30 16:15:37" text="Состояние связи неизвестно" range="ll"> <ll value="0" text="Состояние связи неизвестно"/> <lo value="1" text="Нет связи с объектом"/> </tag> <commands><command name="Опрос состояния" signal="ASK" type="CONTEXT" icon="C:\Program Files\xampp\htdocs\tmonitor\icons\none.bmp"/> <command name="Сброс тревоги" signal="RESET" type="CONTEXT" icon="C:\Program Files\xampp\htdocs\tmonitor\icons\none.bmp"/></commands> <tag name="mytimer" value="0" log="0" timer="0" lastts="2016-07-16 01:16:06" range="" text="" lastsms="22.08.17.01:17"> <hi value="23000"/> </tag> <tag name="220" value="1" lastts="2017-05-29 21:26:45" range=""/> <tag name="Status" value="0" lastts="2015-06-22 11:49:20" range=""> <Status value="0" text="Снят с охраны" range="lo"/> <Status value="1" text="Стоит под охраной" range="hl"/> <Status value="3" text="Нет 220" range="ll"/><text/> </tag> <tag name="WorkTime" value="0" text="Открыт/Рабочее время" use="0" lastts="2015-06-22 12:50:00" range="" R="12:50:00" N="12:04:00"> <WorkTime value="0" text="Открыт/Рабочее время"/> <WorkTime value="1" text="Закрыт/Не рабочее время"/> </tag> <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
Листинг программы
string name2find = "кпкпкпкпкп"; XDocument xdoc = XDocument.Load("objects.xml"); var xobject = xdoc.Root.XPathSelectElement("/system/state/group/object[@name='" + name2find + "']"); if (xobject != null) { xobject.Attribute("lat").Value += "0"; xobject.Attribute("lon").Value += "0"; } xdoc.Save("objects.xml");
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д