Нежелательный xmlns = "" в _di_IXMLNode - PullRequest
0 голосов
/ 11 декабря 2008

Я создаю xml-файл для отображения в Excel, используя _di_IXMLDocument. Но для некоторых тегов я получаю лишний (пустой) атрибут xmlns, который делает файл нечитаемым для Excel ... Вот что я делаю:

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

и вот что получается:

<Worksheet xmlns="" ss:Name="2008-12-11">

Откуда приходит xmlns? Как мне от этого избавиться?

EDIT: Немного больше информации: если я попытаюсь добавить атрибут 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="">

Ответы [ 2 ]

1 голос
/ 11 декабря 2008

xmlns обозначает пространство имен xml, если атрибут не получает явного пространства имен, он не имеет ни одного.

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

0 голосов
/ 11 декабря 2008

Хорошо, я посмотрел на этот вопрос. Хитрость заключалась в том, чтобы создать дочерние узлы и указать, к какому пространству имен они принадлежат, а затем не выводить его ...

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

это дает желаемый результат:

<Worksheet ss:Name="2008-12-11">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...