Копирование и переименование элемента из одного XML-файла в другой XML-файл в c # - PullRequest
0 голосов
/ 21 декабря 2011

Я хочу добавить данные в файл xml из моего графического интерфейса asp.net. Так что у меня есть текстовое поле в графическом интерфейсе.

Так что, если пользователь вводит "IL", то я хочу добавить раздел в этомway

<Employee Location="IL">
    <Male Value="True" />
    <Name Value="xxx" />
</Employee>

XML-файл:

 <Emp>
  <Employee Location="NJ">
    <Male Value="True" />
    <Name Value="xxx" />
   </Employee>
  <Employee Location="NY">
    <Male Value="True" />
    <Name Value="xxx" />
   </Employee>
</Emp>

Примечание:

Каждый раз, когда я добавляю новый раздел здесьвнутренние элементы постоянны, т. е. следующие значения всегда должны быть одинаковыми.

<Male Value="True" />
<Name Value="xxx" />

Я ищу, как мне добиться этого с помощью LINQ to XML?

1 Ответ

3 голосов
/ 17 января 2012

Поскольку только переменная часть узла, которую вы добавляете, является атрибутом Location, вы можете очень легко извлечь этот процесс в метод, например, следующий:

private XElement CreateEmployeeNode(string location)
{
    return new XElement("Employee",
        new XAttribute("Location", location),
        new XElement("Male", new XAttribute("Value", "True")),
        new XElement("Name", new XAttribute("Value", "xxx"))
    );
}

Теперь, когда вы хотите обновить свой существующий XML новыми данными о сотрудниках, вы делаете это следующим образом:

var document = XDocument.Parse(xmlString); // or .Load, depending how you get XML
var newEmployeeLocation = textBox.Text;
document.Element("Emp").Add(CreateEmployeeNode(newEmployeeLocation));

Новый узел сотрудника будет добавлен к существующим.

Для получения дополнительной информации о создании деревьев XML с помощью LINQ to XML (поскольку это то, с чем мы здесь имеем дело), ​​обратитесь к онлайн-руководству здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...