我正在使用_di_IXMLDocument创建一个在Excel中显示的xml文件。但是对于某些标签,我得到了一个不需要的额外(空)xmlns属性,这使得该文件对Excel不可读... 这就是我的所作所为:
...
_di_IXMLNode worksheet = workbook->AddChild("Worksheet");
worksheet->SetAttribute("ss:Name",Now().DateString());
...
这就是出来的结果:
<Worksheet xmlns="" ss:Name="2008-12-11">
xmlns来自哪里?我该如何摆脱它?
编辑: 更多信息:如果我尝试自己将一个xmlns属性添加到Worksheet,如下所示:
...
_di_IXMLNode worksheet = workbook->AddChild("Worksheet");
worksheet->SetAttribute("xlmns","Foo");
worksheet->SetAttribute("ss:Name",Now().DateString());
...
然后“工作表”的子节点都改为获取空的xmlns属性!
<Worksheet xmlns="Foo" ss:Name="2008-12-11">
<Table xmlns="">
答案 0 :(得分:1)
xmlns代表xml名称空间,如果某个属性没有收到显式名称空间,则它没有。
答案 1 :(得分:0)
好的,我看了this个问题。诀窍是创建子节点并告诉它们属于哪个命名空间,然后不输出它......
_di_IXMLNode worksheet = workbook->AddChild("Worksheet","workbooks-namespace",false);
worksheet->SetAttribute("ss:Name",Now().DateString());
这会产生所需的输出:
<Worksheet ss:Name="2008-12-11">