.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");