我使用以下代码初始化一个xmldocument

XmlDocument moDocument = new XmlDocument();
moDocument.AppendChild(moDocument.CreateXmlDeclaration("1.0", "UTF-8", null));
moDocument.AppendChild(moDocument.CreateElement("kml", "http://www.opengis.net/kml/2.2"));

在随后的过程中,我使用以下代码向它写入一些值
using (XmlWriter oWriter = oDocument.DocumentElement.CreateNavigator().AppendChild())
{
  oWriter.WriteStartElement("Placemark");
  //....
  oWriter.WriteEndElement();
  oWriter.Flush();
}

当我保存文档时,这会给我以下xml
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
  <Placemark xmlns="">
    <!-- -->
  </Placemark>
</kml>

如何去掉placemark元素上的空xmln?
--编辑以显示对Placemark编写方式的更改--
如果我将名称空间放在placemark的write中,则没有元素被添加到文档中。

最佳答案

我已通过使用以下代码创建文档(文档元素中没有命名空间)修复了此问题

XmlDocument moDocument = new XmlDocument();
moDocument.AppendChild(moDocument.CreateXmlDeclaration("1.0", "UTF-8", null));
moDocument.AppendChild(moDocument.CreateElement("kml"));

并使用以下代码保存它,以便在保存之前设置命名空间
moDocument.DocumentElement.SetAttribute("xmlns", msNamespace);
moDocument.Save(msFilePath);

这是有效的,因为namespce仅在保存的xml文件中是必需的。

关于c# - XmlWriter编写空的xmlns,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3235492/

10-13 00:14