Копирование элементов из одного 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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д