将新节点添加为子节点会自动添加xmlns属性

时间:2011-02-17 22:25:15

标签: c# xml xml-namespaces

我正在尝试修改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="">

如果此元素是 Rostoq06T 的子元素,我无法弄清楚为什么将 xmlns 属性添加到此节点。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:4)

因为您创建了Rostoq06T-Linha元素没有命名空间,即。使用空命名空间

您必须使用正确的CreateElement重载

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

不幸的是,你必须为你创建的所有孩子指定完整的命名空间!