Мой 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");
И все работает отлично, без проблем. Понятно, что это плохое программирование. Потому что я извлекаю Родителя Элемента, затем использую его как корневой узел, извлекаю Родителя и т. Д.,
То, что я хотел бы сделать, это что-то вроде этого -
Непосредственно введите путь - как в / Parents / Parent (XPath), извлеките этот конкретный узел, сделайте его копию, внесите изменения в его атрибуты, добавьте его в качестве родственного элемента и сохраните документ.
Я что-то делаю глупо?