Извлечь пространство имен элемента первого уровня xml документа

Добрый день! Передо мной стоит задача:

Дан XML-документ. В каждом элементе первого уровня определено пространство имен, распространяющееся на все его элементы-потомки. Для каждого элемента первого уровня добавить в конец его набора дочерних узлов элемент с именем namespace и значением, равным пространству имен обрабатываемого элемента первого уровня (пространство имен добавленного элемента должно совпадать с пространством имен его родительского элемента). Для решения использовать LINQ запрос.

Я не знаю, как считать пространство имен элемента, к которому он привязан. Все до чего я додумалась, это циклом пойти по элементам, и попробовать узнать их URI, как-то так:

C#Выделить код

1
2
3
4
5
6
7

XDocument xdoc53 = XDocument.Load("linq53.xml");
            
            foreach (var elem in xdoc53.Root.Elements())
            {
                var uri = elem.BaseUri;
                
            }

Но это точно не то, потому что в elem хранится и само пространство имен. К слову, на таком документе я тестирую:

XMLВыделить код

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

<?xml version="1.0"?>

   <h:table xmlns:h="http://www.w3.org/TR/html4/">
      <h:tr>
         <h:td>Яблоки</h:td>
         <h:td>Бананы</h:td>
      </h:tr>
   </h:table>
 
   <f:table xmlns:f="http://www.w3schools.com/furniture">
      <f:name>Африканский кофейный столик</f:name>
      <f:width>80</f:width>
      <f:length>120</f:length>
   </f:table>


Как добавить потом добавить элемент я знаю, но как извлечь пространство имен - не знаю, в интернете не нашла ничего.

Подскажите, пожалуйста! Лучше, если в формате linq