编程语言
首页 > 编程语言> > c# – XmlWriter编写空xmlns

c# – XmlWriter编写空xmlns

作者:互联网

我正在使用以下代码初始化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元素上的空xmlns?

– 重播如何改变以往的地板 –
如果我将命名空间放在地标的写入中,则将非元素添加到文档中.

解决方法:

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

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);

这是有效的,因为只有在保存的xml文件中才需要namespce.

标签:c,net,xml,xmlwriter
来源: https://codeday.me/bug/20190701/1342255.html