Primo Chalice Ответов: 1

Как создать несколько узлов с одинаковыми именами и разными значениями?


- Привет!

У меня есть XML с данными в следующем формате:

Оригинальный формат:

<root>
<body>
<sec>
<p>Text 1</p>
<p>Text 2</p>
<p>Text 3</p>
<p>Text 4</p>
<p>Text 5</p>
<p>Text 6</p>
</sec>
</body>
</root>


Желаемый XML-код:
<root>
<body>
<sec>
<absatz>Text 1</absatz>
<absatz>Text 2</absatz>
<absatz>Text 3</absatz>
<absatz>Text 4</absatz>
<absatz>Text 5</absatz>
<absatz>Text 6</absatz>
</sec>
</body>
</root>


Мой нынешний выход:
<root>
<body>
<sec>
<absatz>Text 1Text 2Text 3Text 4Text 5Text 6</absatz>
<absatz/>
<absatz/>
<absatz/>
<absatz/>
<absatz/>
</sec>
</body>
</root>


Пожалуйста помочь.

С уважением
Аман

Что я уже пробовал:

var articlepara = xdoc.Element("root").Element("body").Element("sec").Elements("p").ToList();

                        foreach (var para in articlepara)
                        {
                            string paragraphvalue = para.Value;
                            xedoc.Element("artikel").Element("inhalt").Element("text").Add(new XElement("absatz"));
                            xedoc.Element("artikel").Element("inhalt").Element("text").Element("absatz").Add(paragraphvalue);
                        }

1 Ответов

Рейтинг:
1

Richard MacCutchan

xedoc.Element("artikel").Element("inhalt").Element("text").Add(new XElement("absatz"));
                            xedoc.Element("artikel").Element("inhalt").Element("text").Element("absatz").Add(paragraphvalue);

Вы создаете новый absatz элемент, но вы не используете его ссылку для добавления элемента абзаца. Вторая строка добавит элемент к первому элементу, который он найдет с именем absatz.


Primo Chalice

- Привет!

Итак, есть ли что-то, что я упускаю, или мне нужно перефразировать код?

С уважением
Аман

Richard MacCutchan

Вы создаете новый элемент и добавляете его в документ, но не сохраняете его ссылку. Но вам нужна эта ссылка, чтобы добавить значение абзаца в правильный узел. Поэтому сначала создайте новый элемент и сохраните его ссылку. Затем добавьте значение абзаца во вновь созданную ссылку, а затем добавьте элемент в документ.