Копирование элементов из одного XML в новый XML - C#
Формулировка задачи:
Доброго всем времени суток.
На входе имеется XML файл со сложной структурой:
Задача состоит в том, чтобы создать новый файл XML со структурой:
читаю исходный файл:
создаю экземпляр нового документа, в который должны записываться данные:
делаю проход по документу с условием:
вылетает с ошибкой.
Суть задачи: перенести содержимое всех узлов TableElement в новый файл с сохранением структуры внутри TableElement.
Пересерчил множества подмножеств, но ничего не нашел. Хотя решение, как мне кажется лежит на поверхности.
Помогите, пожалуйста.
<?xml version="1.0" encoding="utf-8"?> <Document> <Row> <Page> <Row> <TableElement> <Columns> <Column /> <Column /> <Column /> <Column /> <Column /> <Column /> </Columns> <Row> <TableElement> <Row> <Cell> <Text>1.1 </Text> </Cell> <Cell> <Text>1.2 </Text> </Cell> <Cell> <Text>1.3 </Text> </Cell> <Cell> <Text>1.4 </Text> </Cell> <Cell> <Text>1.5 </Text> </Cell> <Cell> <Text>1.6 </Text> </Cell> </Row> </TableElement> <TableElement> <Row> <Cell> <Text>2.1</Text> </Cell> <Cell> <Text>2.2 </Text> </Cell> <Cell> <Text>2.3</Text> </Cell> <Cell> <Text>2.4</Text> </Cell> <Cell> <Text>2.5 </Text> </Cell> <Cell> <Text>2.6</Text> </Cell> </Row> </TableElement> </Row> </TableElement> </Row> </Page> </Row> </Document>
<?xml version="1.0" encoding="utf-8"?> <Document> <TableElement> <Row> <Cell> <Text>1.1 </Text> </Cell> <Cell> <Text>1.2 </Text> </Cell> <Cell> <Text>1.3 </Text> </Cell> <Cell> <Text>1.4 </Text> </Cell> <Cell> <Text>1.5 </Text> </Cell> <Cell> <Text>1.6 </Text> </Cell> </Row> </TableElement> <TableElement> <Row> <Cell> <Text>2.1</Text> </Cell> <Cell> <Text>2.2 </Text> </Cell> <Cell> <Text>2.3</Text> </Cell> <Cell> <Text>2.4</Text> </Cell> <Cell> <Text>2.5 </Text> </Cell> <Cell> <Text>2.6</Text> </Cell> </Row> </TableElement> </Document>
xdoc = XDocument.Load(filename);
XDocument newXDoc = new XDocument();
foreach (XElement elm in xdoc.Descendants()) { if ((elm.Name.ToString() == "TableElement")&&(elm.Parent.Name.ToString() == "Row")) { newXDoc.Add(new XElement(elm)); } }
Решение задачи: «Копирование элементов из одного XML в новый XML»
textual
Листинг программы
var xdoc = XDocument.Load(filepath); XDocument newXDoc = new XDocument(); var elem = new XElement("Document");//создаём корневой элемент foreach (XElement elm in xdoc.Descendants()) { if ((elm.Name.ToString() == "TableElement") && (elm.Parent.Name.ToString() == "Row")) { elem.Add(new XElement(elm)); // добавляем в корневой, а не в документ!!! } } newXDoc.Add(elem);// помещаем заполненный корневой в документ newXDoc.Save(filepathToSave);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д