Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 12

Необходимо считать и поменять значение в XML

21.08.2017, 13:39. Показов 1463. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравстуйте, есть документ который состоит из таких вот блоков, необходимо циклом искать по тегу gml:name название и менять у него содержимое тега gml:pos. С XML не работал, но вот всплыла такая задачка, заранее спасибо.
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<gmlpoint>
              <gml:pos>37.253520 55.906210</gml:pos>
            </gmlpoint>
            <ymaps:style>#iconTemplate</ymaps:style>
          </ymaps:GeoObject>
          <ymaps:GeoObject>
            <gml:name>Объект: Сервис</gml:name>
            <gml:metaDataProperty>
              <ymaps:AnyMetaData>
                <code>40000009</code>
                <categoria>Недвижимость</categoria>
                <phone>454354534534545</phone>
                <address/>
              </ymaps:AnyMetaData>
            </gml:metaDataProperty>
            <gml:description><p style="color: #FF0511; font-size: 9pt">ОТКЛЮЧЕН</p><BR/>
                        щшщввв<BR/>
            
                        Информация: 
06 МОН     от 15 мая 2014г;
уауауааууауауаауау&;
 
<BR/></gml:description>
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.08.2017, 13:39
Ответы с готовыми решениями:

Необходимо считать данные с файла и поменять первую и вторую строчку в файле местами
Условие использовать процедуру. Попробовала сделать через массивы: program sofiya_l8(input,output); uses crt; type ...

Считать значение узла XML
Помогите считать value от Int_in_Vanilla в переменную. Это часть файла .config другой программы. &lt;setting...

XmlReader: считать значение из xml и вывести на экран
Здравствуйте.Столкнулся с маленькой проблемой. Мне нужно считать значение из xml и вывести но экран. Вот так делаю XmlReader reader =...

14
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
21.08.2017, 14:33
Выложи весь xml
0
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 12
21.08.2017, 14:54  [ТС]
XML
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
51
52
53
<?xml version="1.0" encoding="windows-1251"?>
<ymaps:ymaps xmlns:ymaps="http://maps.yandex.ru/ymaps/1.x" xmlns:repr="http://maps.yandex.ru/representation/1.x" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" xsi:schemaLocation="http://maps.yandex.ru/schemas/ymaps/1.x/ymaps.xsd">
  <repr:Representation>
    <repr:Style gml:id="homes">
      <repr:parentStyle>default#houseIcon</repr:parentStyle>
    </repr:Style>
    <repr:Style gml:id="offices">
      <repr:iconStyle>
        <repr:href>http://*********.ru/**/route/homes3.png</repr:href>
        <repr:size x="30" y="29"/>
        <repr:offset x="-27" y="-5"/>
      </repr:iconStyle>
      <repr:balloonContentStyle>
        <repr:template>#balloonTemplate</repr:template>
      </repr:balloonContentStyle>
    </repr:Style>
    <repr:Template gml:id="balloonTemplate">
      <repr:text>
                    &lt;div style="font-size:12px;"&gt;
                        &lt;div style="color:#ff0303;font-weight:bold"&gt;$[name]&lt;/div&gt;
                        &lt;div&gt;Код: $[metaDataProperty.AnyMetaData.code]&lt;/div&gt; 
                        &lt;div&gt;Телефон: $[metaDataProperty.AnyMetaData.phone]&lt;/div&gt;                        
                        &lt;div&gt;Адресс: $[metaDataProperty.AnyMetaData.address]&lt;/div&gt;
                        &lt;div style="color:#38FF91;font-weight:bold"&gt;$[description]&lt;/div&gt;
                        </repr:text>
    </repr:Template>
  </repr:Representation>
  
<gmlpoint>
              <gml:pos>37.253520 55.906210</gml:pos>
            </gmlpoint>
            <ymaps:style>#iconTemplate</ymaps:style>
          </ymaps:GeoObject>
          <ymaps:GeoObject>
            <gml:name>Объект: Сервис</gml:name>
            <gml:metaDataProperty>
              <ymaps:AnyMetaData>
                <code>40000009</code>
                <categoria>Недвижимость</categoria>
                <phone>454354534534545</phone>
                <address/>
              </ymaps:AnyMetaData>
            </gml:metaDataProperty>
            <gml:description><p style="color: #FF0511; font-size: 9pt">ОТКЛЮЧЕН</p><BR/>
                        щшщввв<BR/>
            
                        Информация: 
06 МОН     от 15 мая 2014г;
уауауааууауауаауау&;
 
<BR/></gml:description>
 
</ymaps:ymaps>
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.08.2017, 15:25
Цитата Сообщение от niilka0 Посмотреть сообщение
XML
1
2
</ymaps:GeoObject>
<ymaps:GeoObject>
Как-то странно у вас XML скопировался: закрывающий тег идет перед открывающим.
Скопируйте нормально, а то не понятна структура документа.
0
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 12
21.08.2017, 15:30  [ТС]
Да, я не знаю как так, но все правильно, я перепроверил. Я хотел бы кинуть все блоки, но не могу так как конфиденциальная информация. XML в ужасном виде и написан явно не руками, но закрывающийся Тег идет перед открывающимся...
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.08.2017, 15:36
Цитата Сообщение от niilka0 Посмотреть сообщение
Тег идет перед открывающимся...
А выше по дереву нигде нет открывающегося тега?
Вы этот участок скопировали с начала документа или выдернули откуда-то из середины?
Подозреваю, что второй вариант и вы скопировали два обрезанных блока вместо одного полного.
Конфиденциальную информацию можно поудалять, оставив только структуру.
0
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 12
21.08.2017, 15:40  [ТС]
Да, из середины. Удалять содержимое долго, ибо в документе 89К строк, вот кину начало документа с одним блоком, а дальше сразу второй начинается.
XML
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
<?xml version="1.0" encoding="windows-1251"?>
<ymaps:ymaps xmlns:ymaps="http://maps.yandex.ru/ymaps/1.x" xmlns:repr="http://maps.yandex.ru/representation/1.x" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" xsi:schemaLocation="http://maps.yandex.ru/schemas/ymaps/1.x/ymaps.xsd">
  <repr:Representation>
    <repr:Style gml:id="homes">
      <repr:parentStyle>default#houseIcon</repr:parentStyle>
    </repr:Style>
    <repr:Style gml:id="offices">
      <repr:iconStyle>
        <repr:href>http://*****.ru/OD/route/homes3.png</repr:href>
        <repr:size x="30" y="29"/>
        <repr:offset x="-27" y="-5"/>
      </repr:iconStyle>
      <repr:balloonContentStyle>
        <repr:template>#balloonTemplate</repr:template>
      </repr:balloonContentStyle>
    </repr:Style>
    <repr:Template gml:id="balloonTemplate">
      <repr:text>
                    &lt;div style="font-size:12px;"&gt;
                        &lt;div style="color:#ff0303;font-weight:bold"&gt;$[name]&lt;/div&gt;
                        &lt;div&gt;Код: $[metaDataProperty.AnyMetaData.code]&lt;/div&gt; 
                        &lt;div&gt;Телефон: $[metaDataProperty.AnyMetaData.phone]&lt;/div&gt;                        
                        &lt;div&gt;Адресс: $[metaDataProperty.AnyMetaData.address]&lt;/div&gt;
                        &lt;div style="color:#38FF91;font-weight:bold"&gt;$[description]&lt;/div&gt;
                        </repr:text>
    </repr:Template>
  </repr:Representation>
  <ymaps:GeoObjectCollection>
    <ymaps:style>#offices</ymaps:style>
    <gml:featureMembers>
      <ymaps:GeoObjectCollection>
        <gmlname>ненншннонро</gmlname>
        <gml:featureMembers>
          <ymaps:GeoObject>
            <gmlname>Объект: 66326322663</gmlname>
            <gml:metaDataProperty>
              <ymaps:AnyMetaData>
                <code>300010</code>
                <categoria>Недвижимость</categoria>
                <phone>+71111111111</phone>
                <address></address>
              </ymaps:AnyMetaData>
            </gml:metaDataProperty>
            <gml:description><p style="color: #0AFF26; font-size: 9pt">В РАБОТЕ</p><BR/>
                        ГБР: ООО ЧОП КОДЕКС<BR/>
                        Информация: ПРЕЖДЕ ЧЕМ ПРЕДПРИНИМАТЬ КАКИЕ ЛИБО ДЕЙСТВИЯ ОД (Стеф<BR/>
</gml:description>
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.08.2017, 15:49
niilka0, а в этом куске отсутствует элемент gml:pos.
Не зная относительного расположения gml:name и gml:pos, сделать то, что вам нужно, получится разве что методом тыка, если повезет.
0
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 12
21.08.2017, 15:51  [ТС]
Да, проверил, его нет только в первом блоке. Все остальные блоки как тот который я кидал первый раз. Там он есть
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.08.2017, 16:00
Цитата Сообщение от niilka0 Посмотреть сообщение
Там он есть


Понимаете, вы выше привели два частичных примера документа:
В первом приведен кусок с двумя половинами элемента ymaps:GeoObject, в одной половине есть gml:name, а в другой — gml:pos.
Во втором примере приведен кусок без gml:pos.

Ни из одного из них нельзя понять, как gml:name располагается внутри элемента ymaps:GeoObject относительно элемента gml:pos.
Не зная этого, сделать толковую выборку очень сложно.
Скопируйте, пожалуйста, ровно 1 (один) элемент ymaps:GeoObject, но целиком — от открывающего тега до закрывающего.
Такой, чтобы в нем были элементы gml:name и gml:pos.
Конфиденциальную информацию можно оттуда потереть.

Вроде вам это надо, а приходится информацию пассатижами вытягивать
0
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 12
21.08.2017, 16:06  [ТС]
Разобрался со структурой более менее. В той части кода которую я кидал последний раз есть открывающийся Тег, а в других блоках сначала закрывающийся, а потом открывающийся. Закрывающийся закрывает Тег из предыдущего блока
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.08.2017, 16:25
Скопируйте, пожалуйста, ровно 1 (один) элемент ymaps:GeoObject, но целиком — от открывающего тега до закрывающего.
Такой, чтобы в нем были элементы gml:name и gml:pos.
Конфиденциальную информацию можно оттуда потереть.
0
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 12
21.08.2017, 16:28  [ТС]
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<ymaps:GeoObject>
            <gmlname>Объект: </gmlname>
            <gml:metaDataProperty>
              <ymaps:AnyMetaData>
                <code>300010</code>
                <categoria>Недвижимость</categoria>
                <phone>+799090000</phone>
                <address>Кл</address>
              </ymaps:AnyMetaData>
            </gml:metaDataProperty>
            <gml:description><p style="color: #0AFF26; font-size: 9pt">В РАБОТЕ</p><BR/>
                        <BR/>
                        Информация: ПРЕЖДЕ ЧЕМ ПРЕДПРИНИМАТЬ КАКИЕ ЛИБО ДЕЙСТВИЯ (Кочеков Босминов) ОД (Стеф<BR/></gml:description>
            <gmlpoint>
              <gml:pos>36.675415 56.282879</gml:pos>
            </gmlpoint>
            <ymaps:style>#homes</ymaps:style>
          </ymaps:GeoObject>
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
21.08.2017, 16:48
Лучший ответ Сообщение было отмечено niilka0 как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
var xmlString = "<?xml version=....";
var xml = XElement.Parse(xmlString);
 
var nsManager = new XmlNamespaceManager(new NameTable());
nsManager.AddNamespace("ymaps", "http://maps.yandex.ru/ymaps/1.x");
nsManager.AddNamespace("gml", "http://www.opengis.net/gml");
 
var name = "Объект: ";
var positions = xml.XPathSelectElements($"//ymaps:GeoObject/gml:point/gml:pos[../../gml:name = '{name}']", nsManager);
foreach (var position in positions)
{
    // Modify
}
0
0 / 0 / 0
Регистрация: 21.08.2017
Сообщений: 12
21.08.2017, 16:54  [ТС]
Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.08.2017, 16:54
Помогаю со студенческими работами здесь

При помощи LINQ to XML считать параметры из XML
Помогите при помощи LINQ to XML считать следующие параметры из XML: id, first_name, last_name Вот мой XML &lt;?xml...

необходимо сделать так: редактирую ячейку DataGridView и при НОВОМ недопустимом значении, необходимо вернуть ячейке старое значение
Но как это сделать? То есть ест таблица DataGridView, ячейки в ней заполнены некоторым образом; их можно редактировать вручную. Я хочу...

Необходимо считать файл в стрингрид
Необходимо считать файл в стрингрид

Необходимо считать значения из edittext
Необходимо считать значения из edittext и выполнить над ними математические операции. Платформа андроид. Только начинаю учить. Буду...

Считать с XML
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;Employees&gt; &lt;supervisor&gt; &lt;firstname&gt;Denis&lt;/firstname&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru