Question

Je crée un fichier xml pour l'affichage dans Excel à l'aide _di_IXMLDocument. Mais pour certaines balises, je reçois un xmlns supplémentaires non désirés (vide) attribut sorcière rend le fichier illisible pour Excel ... C'est ce que je fais:

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

et c'est ce qui sort:

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

D'où vient xmlns vient? Comment puis-je me débarrasser de lui?

EDIT: Un peu plus d'info: Si je tente d'ajouter un attribut xmlns à moi-même la feuille de travail, comme ceci:

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

Ensuite, les nœuds enfants de « Feuille de travail » tous obtenir les attributs xmlns vides à la place!

<Worksheet xmlns="Foo" ss:Name="2008-12-11">
  <Table xmlns="">
Était-ce utile?

La solution 2

Ok j'ai regardé cette question . L'astuce était de créer les nœuds enfants et dire ce que l'espace de noms auquel ils appartiennent, et de ne pas le sortir ...

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

ce qui produit la sortie désirée:

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

Autres conseils

xmlns signifie l'espace de nom xml, si un attribut ne reçoit pas un espace de nom explicite, il ne possède aucune.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top