Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 30.10.2018
Сообщений: 24
.NET 3.x

XML - SetParametr

17.02.2019, 10:58. Показов 381. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно сделать стабильный метод что будет назначать значение для атрибутов элемента
XML
1
2
3
4
<?xml version="1.0" encoding="utf-8"?>
<Players>
  <Player CSteamID="76561198353071951" Name="Павел Петрович" SVN="1" D="0" R="1" />
</Players>
В котором к примеру D будет присваиваться 1000
аргументы для метода это (CSteamID SteamID, string Parametr, string Value)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2019, 10:58
Ответы с готовыми решениями:

Подсчитать количтво нодов в XML при помощи LINQ to XML
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;Root&gt; &lt;host&gt; 192.168.1.1 &lt;/host&gt; &lt;host&gt; 192.168.1.3 &lt;/host&gt; &lt;/Root&gt; как...

Xml сериализация многострочных строк, отступы в xml файле
У меня есть класс который сериализуется в xml и содержит многострочную строку. class SerializableClassWithMultilineString { public...

Объединение 2 xml файлов по ключу в 1 xml с использованием linq
День добрый. Я уже отписывался в другой теме с объединением 2 xml, но увы тот метод для меня слишком сложен. Видел на форумах ребята...

3
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18303 / 14227 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
17.02.2019, 17:05
PebloSasio,
C#
1
2
3
4
5
6
string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Players>\r\n  <Player CSteamID=\"76561198353071951\" Name=\"Павел Петрович\" SVN=\"1\" D=\"0\" R=\"1\" />\r\n</Players>";
XElement xroot = XElement.Parse(xml);
 
string SteamID = "76561198353071951", Parametr = "D", Value = "100";
XAttribute attr = xroot.XPathSelectElement("Player[@CSteamID='" + SteamID + "']")?.Attribute(Parametr);
if (attr != null) attr.Value = Value;
Что за тип CSteamID я не знаю и поэтому использовал string. В метод код несложно переделать.
0
0 / 0 / 0
Регистрация: 30.10.2018
Сообщений: 24
17.02.2019, 19:51  [ТС]
OwenGlendower, А если игроков 2
Мне то нужен метод в котором я смогу использовать это бесконечно
C#
1
2
3
4
public void SetParametr(CSteamID SteamID, string Parametr, string Value)
{
// code
}
Оно должно сначала находить этот елемент после чего изменять его атрибут, к примеру SVN
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18303 / 14227 / 5368
Регистрация: 17.03.2014
Сообщений: 28,900
Записей в блоге: 1
17.02.2019, 21:36
Цитата Сообщение от PebloSasio Посмотреть сообщение
А если игроков 2
В таком случае у них по идее будет разный CSteamID

Цитата Сообщение от PebloSasio Посмотреть сообщение
Мне то нужен метод в котором я смогу использовать это бесконечно
Используй. Что мешает?

Добавлено через 1 час 40 минут
PebloSasio, для более удобной работы можно написать класс который упростит работу с подобными данными
C#
1
2
3
4
5
6
7
8
9
void Main()
{
    string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n<Players>\r\n  <Player CSteamID=\"76561198353071951\" Name=\"Павел Петрович\" SVN=\"1\" D=\"0\" R=\"1\" />\r\n</Players>";
    var players = PlayersStorage.Parse(xml);
    Console.WriteLine("Name={0}", players["76561198353071951"]["Name"]);
    Console.WriteLine("D={0}", players["76561198353071951"]["D"]);
    players["76561198353071951"]["D"] = "100";
    Console.WriteLine("New D={0}", players["76561198353071951"]["D"]);
}
PlayersStorage

Класс не доделан. Не помешает реализовать IEnumerable в обоих классах и добавить поддержку чтения/записи из файла/потока. Если необходимо сохранять порядок игроков и их атрибутов, то это тоже необходимо дописать.
C#
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
class PlayersStorage
{
    Dictionary<string, Player> _players;
    
    public static PlayersStorage Parse(string xml)
    {
        var xplayers = XElement.Parse(xml);
        var storage = new PlayersStorage();
        storage._players = xplayers.Elements("Player")
            .Select(x => new { 
                Id = x.Attribute("CSteamID").Value, 
                Player = Player.CreateFrom(x)
            })
            .ToDictionary(_ => _.Id, _ => _.Player);
        return storage;
    }
    
    public Player this[string csteamId]
    {
        get { return _players[csteamId]; }
    }
}
 
class Player
{
    Dictionary<string, string> _attributes;
    
    public string this[string name]
    {
        get { return _attributes[name]; }
        set { _attributes[name] = value; }
    }
    
    public static Player CreateFrom(XElement xplayer)
    {
        return new Player {
            _attributes = xplayer.Attributes()
                .Where(attr => attr.Name != "CSteamID")
                .ToDictionary(attr => attr.Name.LocalName, attr => attr.Value)
        };
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.02.2019, 21:36
Помогаю со студенческими работами здесь

Получаю xml по url, как сохранить содержимое в новый xml файл, только чтобы структура не нарушилась?
Когда делаю так, структура нарушается WebRequest request =...

Копирование элементов из одного XML в новый XML
Доброго всем времени суток. На входе имеется XML файл со сложной структурой: &lt;?xml version=&quot;1.0&quot;...

Создание документа XML через LINQ-to-XML
как создать новый документ xml через LINQ-to-xml XDocument doc =new XDocument(&quot;name.xml&quot;,Encoding.UTF8); ...

Создание XML строки не используя System.Xml
Каким образом сформировать строку XML и сохранить её содержимое в виде XML файла, не используя System.Xml?

Создание xml документа посредством LINQ to XML
Добрый день. Мне необходимо создать xml-документ который будет включать следующие элементы: &lt;Envelope...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru