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 属性を自分でワークシートに追加しようとすると、次のようになります。

...
_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 に答える