kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

LINQ to XMLでOpenXMLの名前空間を生成する

Create OpenXML Spreadsheet's xml namespace in LINQ ...

ちょこっとOpenXMLのXMLを[Open|Close]XML SDKを使わずに書いてみたらどうなるかということをやってみたら、結構大変。一番悩んだのがXMLの名前空間を作る方法。

mc:Ignorable 属性

OpenXMLに限った話ではなく、XAMLでも「このマークアップは(XMLとしては)無視する」という意味のmc:Ignorableなんて属性があったりしますが、「え、これどうやって作るんだっけ?」と悩んだのが始まり。名前空間作るってサンプルにこんなのないし、XAMLを自前で作っているMSDN blogもありましたが、MemoryStreamで読んで、文字列みつけてそのまま追記するようなやつだったし…。

まさかいくらなんでもそんなことないだろうと試行錯誤した結果がこれ。OpenXMLのSpreadSheetもこんな風になっているんだなぁ、といい勉強になりました(役に立つかどうかはあれだけど)。もしこんな名前空間を作る必要に迫られた人がいたら(いないよな…)どうぞ。