0

我正在使用 _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="">
4

2 回答 2

1

xmlns 代表 xml 命名空间,如果一个属性没有收到明确的命名空间,它就没有。

http://www.w3.org/TR/REC-xml-names/

于 2008-12-11T12:47:54.223 回答
0

好的,我看了一下这个问题。诀窍是创建子节点并告诉它们属于哪个命名空间,然后不输出它......

_di_IXMLNode worksheet = workbook->AddChild("Worksheet","workbooks-namespace",false);
worksheet->SetAttribute("ss:Name",Now().DateString());

这会产生所需的输出:

<Worksheet ss:Name="2008-12-11">
于 2008-12-11T13:06:57.290 回答