45 / 45 / 32
Регистрация: 01.10.2012
Сообщений: 185
1

LINQ to XML: Заменить значения атрибутов всего узла

14.01.2016, 20:42. Показов 1085. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Можно ли заменить значения атрибутов всего узла UserCart для юзера с именем user?

Например,

XML
1
2
3
4
5
6
7
8
<Products_>
      <MedicineProduct
        Product_Name="product"
        Product_ID="0"
        Price="0"
        Quntity="0"
        Image="" />
</Products_>
на

XML
1
2
3
4
5
6
7
8
<Products_>
      <MedicineProduct
        Product_Name="New product"
        Product_ID="1"
        Price="1"
        Quntity="1"
        Image="" />
</Products_>
В документе

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Users>
<UserInfo>
  <Name>user</Name>
  <Wallet>0</Wallet>
  <UserCart>
    <Products_>
      <MedicineProduct
        Product_Name="product"
        Product_ID="0"
        Price="0"
        Quntity="0"
        Image="" />
    </Products_>
  </UserCart>
</UserInfo>
Пытался так, но никаких изменений не произошло.

C#
1
2
3
4
5
6
        public static void Edit(UserInfo user, Products usercart)
        {
            XDocument x = XDocument.Load(path);
            XElement replaced = x.Root.Descendants("UserCart").Where(y => (string)y.Parent.Element("Name") == "user");
            replace.SetElementValue("UserCart", usercart);
         }
0
14.01.2016, 20:42
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.01.2016, 20:42
Ответы с готовыми решениями:

LINQ to XML: Вывести значения атрибутов из файла
Доброго времени суток, форумчане! Подскажите что не так в моём коде, не судите строго новичка:) Нужно из XML файла считать значение...

LINQ to XML: Получить значения всех аттрибутов узла
Друзья, всем привет. Кто нибудь может подсказать как написать правильно запрос, используя xml linq, для того, чтобы достать все значения...

Изменение атрибутов XML после удаления узла
Такая проблема &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;Animals&gt; &lt;Dinosaur ID=&quot;1&quot;&gt; &lt;Name&gt;Раптор&lt;/Name&gt; ...

2
Заблокирован
15.01.2016, 21:57 2
Цитата Сообщение от Gekr Посмотреть сообщение
Можно ли заменить значения атрибутов всего узла UserCart для юзера с именем user?
Gekr, можно, но нужно написать метод обертку, который вернет XElement, содержащий информацию о текущем объекте.
Например:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    class Product
    {
        public string Name { get; set; }
        public int ID { get; set; }
        public decimal Price { get; set; }
        public int Quntity { get; set; }
        public string Image { get; set; } 
 
        public XElement ToXElement()
        {
            return
                new XElement("Products_",
                    new XElement("MedicineProduct",
                        new XAttribute("Product_Name", Name),
                        new XAttribute("Product_ID", ID),
                        new XAttribute("Price", Price),
                        new XAttribute("Quntity", Quntity),
                        new XAttribute("Image", Image)));
        }
    }
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
         string xml = @"<Users>
<UserInfo>
  <Name>user</Name>
  <Wallet>0</Wallet>
  <UserCart>
    <Products_>
      <MedicineProduct
        Product_Name=""product""
        Product_ID=""0""
        Price=""0""
        Quntity=""0""
        Image="""" />
    </Products_>
  </UserCart>
</UserInfo>
</Users>
";
            Product usercart = new Product
            {
                Name = "New product",
                ID = 1,
                Price = 1M,
                Quntity = 1,
                Image = ""
            };
            XDocument x = XDocument.Parse(xml);
            XElement replaced = x.Root.Descendants("UserCart")
                .Single(y => (string)y.Parent.Element("Name") == "user");
            replaced.ReplaceAll(usercart.ToXElement());
            Console.WriteLine(x);
если ReplaceAll вам не подходит, то есть еще метод ReplaceWith и подобные.

Хотя, возможно, вы пошли решать проблему не тем путем.
1
45 / 45 / 32
Регистрация: 01.10.2012
Сообщений: 185
16.01.2016, 17:30  [ТС] 3
Да, я действительно не тем путем пошел решать проблему. Хотел изменять xml документ всякий раз когда данные о пользователе менялись. Потом понял, что лучше всего сохранять данные во время выхода из программы и подгружать при загрузке.
0
16.01.2016, 17:30
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.01.2016, 17:30
Помогаю со студенческими работами здесь

LINQ to XML: использование атрибутов
привет всем, нужна помощь, в шарпе не силён есть вот такой кусок кода: XDocument xDocument =...

LINQ to XML | Замена атрибутов во всем документе
Добрый день, помогите решить проблему. Дан XML-документ. Изменить имена атрибутов всех элементов, добавив слева к исходному имени...

LINQ 2 XML Получение атрибутов дочерних элементов
имеется XML файл вида &lt;Root&gt; &lt;Elements Name=&quot;NAME&quot;&gt; &lt;Element Atr1=&quot;atr1&quot; Atr2=&quot;atr2&quot; /&gt; &lt;Element...

LINQ to XML. NullReferenceExeption при чтении атрибутов
Здравствуйте. Нужна помощь, пробую распарсить ствоку но выдает NullReferenceExeption. Сделал похожый пример, он работает нормально. ...

Поиск узла по атрибуту с помощью LINQ to XML
Как найти узел по атрибуту и удалить? Как найти узел по атрибуту и изменить значения в дочерних елементах? через linq


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Опции темы

Новые блоги и статьи
Система безопасности в Laravel: возможности и примеры
Wired 18.02.2025
Каждый день появляются новые виды атак и уязвимостей, которые могут поставить под угрозу конфиденциальные данные пользователей и функционирование всей системы. В этом контексте выбор надежного. . .
Давайте сравним Django и Laravel
Wired 18.02.2025
Django и Laravel - два мощных инструмента, которые часто сравнивают между собой. Оба фреймворка предлагают разработчикам богатый набор возможностей для создания масштабируемых веб-приложений, но. . .
Laravel или React - что лучше?
Wired 18.02.2025
В разработке веб выбор правильного инструмента часто определяет успех всего проекта. Особенно интересным представляется сравнение Laravel и React - двух популярных технологий, которые часто. . .
Laravel 11: новые возможности, гайд по обновлению
Wired 18.02.2025
Laravel 11 - это новая масштабная версия одного из самых популярных PHP-фреймворков, выпущенная в марте 2024 года. Эта версия продолжает традицию внедрения передовых технологий и методологий. . .
Миграции в Laravel
Wired 18.02.2025
Разработка веб-приложений на Laravel неразрывно связана с управлением структурой базы данных. При работе над проектом часто возникает необходимость вносить изменения в схему базы данных - добавлять. . .
Аутентификация в Laravel
Wired 18.02.2025
В современном мире веб-разработки безопасность пользовательских данных становится критически важным аспектом любого приложения. Laravel, как один из самых популярных PHP-фреймворков, предоставляет. . .
Laravel или Symfony: что лучше для старта?
Wired 18.02.2025
В веб-разработке выбор правильного фреймворка может стать определяющим фактором успеха проекта. Особенно это актуально для PHP - одного из самых распространенных языков программирования, где Laravel. . .
Что нового в Laravel 12
Wired 18.02.2025
С момента своего появления в 2011 году Laravel постоянно развивается, внедряя инновационные решения и совершенствуя существующие возможности. В начале 2025 года ожидается выход Laravel 12 - новой. . .
Роутер в Laravel: как работать с маршрутами
Wired 18.02.2025
Маршрутизация - один из основополагающих элементов любого веб-приложения на Laravel, определяющий как приложение отвечает на HTTP-запросы к различным URL-адресам. По сути, роутинг - это механизм. . .
Интеграция шаблона Bootstrap в Laravel PHP
Wired 18.02.2025
Разработка веб-приложений в современном мире требует не только надежного бэкенда, но и привлекательного, отзывчивого интерфейса. Laravel, как один из самых популярных PHP-фреймворков, отлично. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru