在XmlWriter中添加多个名称空间声明

时间:2009-12-15 04:42:01

标签: namespaces xmlwriter

我正在尝试使用XmlWriter

写出以下元素
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">

我已经使用

完成了第一个声明
writer.WriteStartElement("kml", "http://www.opengis.net/kml/2.2");

如何将剩余的3个声明添加到同一个元素?

3 个答案:

答案 0 :(得分:37)

writer.WriteAttributeString("xmlns","gx", null, "http://www.google.com/kml/ext/2.2");
writer.WriteAttributeString("xmlns","kml", null, "http://www.opengis.net/kml/2.2");
writer.WriteAttributeString("xmlns","atom", null, "http://www.w3.org/2005/Atom");

来自https://msdn.microsoft.com/en-us/library/cfche0ka(v=vs.100).aspx

答案 1 :(得分:3)

Ryan B的答案不完整,因为XML命名空间仅作为属性编写但未在名称表中注册,因此LookupPrefix将无法获取其中一个XML命名空间f.i的前缀。 http://www.w3.org/2005/Atom。它将返回null而不是atom

要编写命名空间属性并获取命名空间,请使用

writer.WriteAttributeString("atom",
                            "http://www.w3.org/2000/xmlns/",
                            "http://www.w3.org/2005/Atom");

使用命名空间http://www.w3.org/2000/xmlns/也会在名称表中注册前缀。

答案 2 :(得分:0)

名称空间只是属性。使用标准方法为元素编写属性。