vishnulalr Ответов: 1

Как добавить новый XML-элемент с определенным именем атрибута внутри элемента в C#


У меня есть ниже xml-файл, и я хочу добавить новые данные к определенному элементу с именем TES и
<product ip="3,4,4,4,4" op="33" />

<?xml version="1.0" encoding="utf-8"?>
<root>
  <Brand name="TES">
   
    <product ip="40,67, 0,0,0" op="0" />
    <product ip="49,25, 4,4,0" op="0" />
    <product ip="40,5, 3,64,0" op="0" />
    <product ip="85,27, 6,6,0" op="0" />
    <product ip="8,27, 6,6,0 " op="0" />
    <product ip="23,5, 4,1,0" op="0" />
    <product ip="26,25,0,33,10" op="0" />
    <product ip="100,0,0,0,0" op="0" />
  </Brand>
  <Brand name="SW">
    <product ip="0, 1, 0,0,0" op="1" />
    <product ip="0, 100,0,0,0" op="1" />
    <product ip="0, 25,0,75,0" op="1" />
    <product ip="0, 25,0,75,0" op="1" />
    <product ip="0, 35,0,55,0 " op="1" />
    <product ip="42, 43,0,82,6" op="1" />
    <product ip="24, 7,1,17,0" op="1" />
  </Brand>
</root>


Что я уже пробовал:

я попробовал ниже c#, но он только добавляет атрибуты к первому существующему элементу

XElement root = XElement.Load("sample.xml");
            root.Element("Brand").Element("product").Add( new XAttribute("IP", "3,4,4,4,4"),new XAttribute("OP", "33"));
            root.Save("output.xml");

Eric Lynch

Не совсем понятно, что вы здесь пытаетесь сделать. Ваш код делает то, о чем вы его просили. Что из перечисленного вы пытаетесь сделать?

Вы пытаетесь добавить новый элемент "продукт" в "бренд"? -или-
Вы пытаетесь добавить новые атрибуты "ip"/"op" к определенному элементу "продукт" в рамках "бренд"? Если да, то какой? В настоящее время вы добавляете к первому. -или-
Вы пытаетесь добавить дополнительные значения к существующим атрибутам "ip"/"op" (например, до: ip=1,2,3 / после: ip=1,2,3,4,5,6)?

Самый простой способ спросить-это, вероятно, показать небольшой документ до XML и после XML для того, что вы хотите сделать.

1 Ответов

Рейтинг:
1

Eric Lynch

Беря здесь догадку, потому что это не совсем то, что вы просите, но вы пытаетесь это сделать...

XElement element = root
  .Elements("Brand")
  .Where(e => e.Attribute("name").Value == "TES")
  .Single();

element.Add(
  new XElement("product",
    new XAttribute("ip", "3,4,4,4,4"),
    new XAttribute("op", "33")));


Если нет, я бы предоставил два небольших XML-документа: документ до и документ после, показывающий, что вы хотите сделать (как я предложил в комментариях).