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

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


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

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

6   голосов , оценка 3.5 из 5
Похожие ответы