Копирование элементов из одного XML в новый XML - C#

Узнай цену своей работы

Формулировка задачи:

Доброго всем времени суток. На входе имеется XML файл со сложной структурой:
<?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 со структурой:
<?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));
    }
}
вылетает с ошибкой. Суть задачи: перенести содержимое всех узлов TableElement в новый файл с сохранением структуры внутри TableElement. Пересерчил множества подмножеств, но ничего не нашел. Хотя решение, как мне кажется лежит на поверхности. Помогите, пожалуйста.

Решение задачи: «Копирование элементов из одного 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);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы