Мой XML документа, как показано ниже -XML Перемещение, копирование элементов и узлов с помощью LINQ к XML
<?xml version="1.0" encoding="utf-8"?>
<Parents>
<Parent id="A" description="A is a parent">
<Children>
<ChildName name = "Son1ofA" />
<ChildName name = "Son2ofA" />
</Children>
</Parent>
</Parents>
Требование -
- Чтобы определить элемент "Родитель", клонировать его. Измените идентификатор атрибута на «B». Добавьте его как брата к себе (сделав его новым ребенком из «Родителей»).
Выходной файл, как показано ниже -
<Parents> <Parent id="A" description="A is a parent"> <Children> <ChildName name = "Son" /> <ChildName name = "Daughter" /> </Children> </Parent> <Parent id="B" description="A is a parent"> <Children> <ChildName name = "Son" /> <ChildName name = "Daughter" /> </Children> </Parent>
Мой код
XDocument myXMLDocument = XDocument.Load("File.xml");
XElement myParentsElement = myXMLDocument.Element("Parents");
XElement myFirstParentElement = myParentsElement.Element("Parent");
XElement myNewParentElement = new XElement(myFirstParentElement);
XAttribute myParentId = myNewParentElement.Attribute("id");
myParentId.Value = "B";
myFirstParentElement.AddAfterSelf(myNewParentElement);
myXMLDocument.Save("NewFile.xml");
И это отлично работает, без каких-либо проблем. Понятно, что это не хорошее программирование. Потому что я извлекаю Element Parents, а затем использую это как корневой узел, я извлекаю Parent и т. Д.,
То, что я хотел бы сделать, это что-то вроде этого: Прямо ключ в пути - как in/Parents/Parent (XPath), извлеките этот конкретный узел, сделайте его копию, внесите изменения в его атрибуты, добавьте его как родной брат и сохраните документ.
Я делаю что-то глупое?