Добавление нового узла в качестве дочернего элемента автоматически добавляет атрибут xmlns - PullRequest
0 голосов
/ 18 февраля 2011

Я пытаюсь изменить документ XML.XML имеет следующую структуру:

<?xml version='1.0' encoding='iso-8859-1'?>
 <Modelo39 xmlns="http://www.dgci.gov.pt/2002/OT" versao="1">
<Rosto>
<QuadroInicio />
<Quadro01>
  <Q01C01>555555555</Q01C01>
</Quadro01>
<Quadro06>
  <Rostoq06T>

  </Rostoq06T>
</Quadro06>
</Rosto>
</Modelo39>

Я пытаюсь добавить к Rostoq06T новый узел, подобный следующему:

<Rostoq06T-Linha numero="1">
<NIF>100000000</NIF>
<CodRend>01</CodRend>
<Rendimento>2500</Rendimento>
<Retido>500</Retido>
</Rostoq06T-Linha>

Я создаюновый элемент с именем Rostoq06T-Linha , и я правильно добавляю его к узлу Rosto06T:

XmlElement node06T = xmlDoc.CreateElement("Rostoq06T-Linha");
node06T.SetAttribute("numero", linha.ToString());
//Here i add the elements to node06T
xmlDoc.DocumentElement.GetElementsByTagName("Rostoq06T").Item(0).AppendChild(node06T);

Моя проблема в том, что Rosto06T-Linha генерируется следующим образом:

<Rostoq06T-Linha numero="1" xmlns="">

Я не могу понять, почему он добавляет атрибут xmlns к этому узлу, если этот элемент является дочерним для Rostoq06T .

Может кто-нибудь помочь мне исправить это?

1 Ответ

4 голосов
/ 18 февраля 2011

Поскольку вы создали элемент Rostoq06T-Linha без пространства имен, т.е. с пустым пространством имен .

Вы должны использовать соответствующую CreateElement перегрузку

XmlElement node06T = xmlDoc.CreateElement("Rostoq06T-Linha","http://www.dgci.gov.pt/2002/OT");

К сожалению, вы должны указать полное пространство имен для всех создаваемых вами детей!

...