エンジニアが作る最新ITブログ トップ>エンジニアの発信する【XML】
2009年09月02日[dev][groovy]StreamingMarkupBuilderでXML宣言を出力(補足)
groovy.xml.StreamingMarkupBuilderのソースを見ると、”mkp.”の後にはyield/yieldUnescaped/xmlDeclaration/comment/piが使えることが分かります。さらに、StreamingMarkupBuilderはgroovy.xml.streamingmarkupsupport.AbstractStreamingBuilderを継承しているので、そこで定義されているdeclareNamespace/declareAlias/getName ...
2009年09月01日[dev][groovy]StreamingMarkupBuilderでXML宣言を出力
前回のg*workshopでは「StreamingMarkupBuilderはXML宣言を出力してくれない」と言いましたが、実はありました。id:kskyさんからTwitterでやりかたを教えていただきましたのでメモ。 import java.nio.charset.* import groovy.xml.* def xml = new StreamingMarkupBuilder().bind{ mkp.xmlDeclaration() message("Hello World" ...
2009年08月20日VBAでXMLを使う 体験:XMLファイル条件選択
関連記事の目次はこちら
今回は検索をしてみる。 ベースとするソースコードはこちらに書いたものを使い回す。 早速。 For Each Node In XDoc.selectNodes("/records/prefectural/name[.='沖縄']")結果は 沖縄 となる。沖縄と同じテキストのものはこのひとつだから。 属性でも検索ができる。次のようなコードで。 For Each Node In XDoc.selectNodes("/records/prefectural[@area='9']")結果は 鹿児島 鹿児島 沖縄 那覇 となる。 -------------------------------------- 他の言語でのこととも書いたが、実はVBAでどうしてもXMLを使いたい状況になった、ということもあり、こういうネタを書いた。 更新等はそのうち書くとは思うが、これを使った別件に取りかかるため、XML系のネタは一旦これでお休みとする。 ※並べ替えとか、面白そうなので簡単にできるなら、と思ったが、XSLを使った例しか見あたらなかったり・・。それってひとつ敷居が高かったりする・・。まだまだ勉強不足/情報不足なのだ。 表現が解りにくい等があればご連絡頂ければと思う。 同じテーマの最新記事
2009年08月19日VBAでXMLを使う 体験:XMLファイル読み取り3
関連記事の目次はこちら
今回は属性に関して。 ベースとするソースコードはこちらに書いたものを使い回す。 早速始める。 For Each Node In XDoc.selectNodes("/records/prefectural/@id")結果は 01 02 46 47 となる。@を付けると、それは属性っていう決まりだそうな。 上記で @id を @area に変えるとエリアの情報が取れるが、@Area などとすると何も取れない。大文字と小文字は区別されている、ということになる。 属性と値を一緒に出すには次のようなコードで。 For Each Node In XDoc.selectNodes("/records/prefectural")結果は id:01 , area:1 id:02 , area:2 id:46 , area:9 id:47 , area:9 となる。 さて、次回はいよいよ検索に入っていこうと思う。 同じテーマの最新記事
2009年08月18日VBAでXMLを使う 体験:XMLファイル読み取り2
関連記事の目次はこちら
読み取りのバリエーションを増やしてみる。 ベースとするソースコードはこちらに書いたものを使い回す。 早速始める。 まずは例。 For Each Node In XDoc.selectNodes("/records/prefectural")結果は 北海道 札幌 青森 青森 鹿児島 鹿児島 沖縄 那覇 となる。 前回の最後と見比べていただくと、渡すパラメータは 前回:/records/prefectural/* 今回:/records/prefectural と、/* があるかないか、の違いである。 さて、では「 / だけ残したらどうなる?」という疑問も湧くだろう。 /records/prefectural/ という場合だ。 For Each Node In XDoc.selectNodes("/records/prefectural/")結果は、「DOMはノードを返しません」というエラーが発生した。残念ながら、これはNGである。 タグの名前も併せて取得 ----------------- これまで、いわば「内容」だけを取っていた。「項目」も見てみたい。 For Each Node In XDoc.selectNodes("/records/prefectural")この結果は name:北海道 , capital:札幌 name:青森 , capital:青森 name:鹿児島 , capital:鹿児島 name:沖縄 , capital:那覇 となる。 今までは単にNodeという変数の Text プロパティを取得していただけだが、childNodes(n) ※言うまでもないが、nは変数。上記プログラムでFor文で変化しているもので、単なるアルファベットではない。の nodeName と nodeTypedValue を取得している。 childNodesの数だけ繰り返すので、全要素を出力することになる。 なお、プロパティでやたらと Node という綴り出てくる。ノード、というが「こぶ」とか「節」とかいう意味で、いまひとつピンとこない。 意味的にはclusterの方が理解しやすいのではないかと思う。その点、以下の書籍では上手に説明している。 XML-DB開発 実技コース (DB Magazine SELECTION)/下佐粉 昭 ![]() ¥2,730 Amazon.co.jp 次回は、属性に触れる予定である。 2009年08月16日XML関連 目次
小出しにしたので、検索エンジンでどのページがヒットするか解らない。よって、目次を作って順番に読んで行っていただければ「とりあえず使えるんじゃないか?」と用意した。
VBAでXMLを使う 準備 参照設定 XMLファイル 体験 XMLファイル読み込み XMLファイル読み取り1 XMLファイル読み取り2 8/18 予定 XMLファイル読み取り3 8/19 予定 XMLファイル条件選択 8/20 予定 同じテーマの最新記事
2009年08月15日Microsoft Math
数式をブラウザに簡単に出したいので、調べていたところこんなものを発見した。
Microsoft Math http://www.microsoft.com/japan/athome/umall/math/ 数式の意味を持たせたままWord2007で活用できるとか。これは面白そう。 XMLのようなマークアップ言語では現状表現が難しいとしても、これで画像が簡単にできるなら、まあいいか、というノリで試用。30日間は無料で使えるそうだ。ダウンロードして早速試す。 起動するとこんな感じ。 ![]() 関数電卓といったところか。 なんか「グラフ」ってのが気になったので、「グラフ」タブを選択し、なんとなく「方程式」を選んでみた。すると、式の入力例が載っていたので、それをコピー、貼り付けてみることにした。 まずはコピー対象を選択。 ![]() で、式を入力するエリアをクリックし、出てきたダイアログにペーストした。 ![]() ここで、数式のように変換されている。結構ステキ。 数式をエントリーしてもやはり数式風である。 ![]() で、「グラフ」ボタンを押してみる。 ![]() ちゃんとグラフが出た。 電卓とは違い、数式の保存なんかもできる。保存したファイルは、独自形式ではあるが、テキストファイルで、独自タグを使っているがXMLに似た形式である(XML宣言の代わりに他のモノが宣言されている・・)。 関数電卓風で、入力したものの表示が数式で出る、というところがいい。 個人的にもう少し遊んでみる。 同じテーマの最新記事
2009年08月14日VBAでXMLを使う 体験:XMLファイル読み取り1
お次は XMLファイルの内容を読み取る。しかし、読み取るには「ファイルの構造」を知っておく必要がある。
サンプルの場合 ・ ・ ・ である。 ということを念頭に、いくつか読み取りサンプルを書く。 ベースは前回のものに少し手を加えたものを使う。修正した箇所、更に使い回すため Sub ReadXML() 早速始める。 県名の取得 ----------------------- まずは県名を順次取得する。県名は XML上、name としている。 県名は、records の下の prefectural の name の内容である。この場合、スラッシュで区切ってパスを示すとよい。records/prefectural/name てな具合である。 For Each Node In XDoc.selectNodes("/records/prefectural/name")結果は 北海道 青森 鹿児島 沖縄 となる。 県庁所在地の取得 -------------------- 県庁所在地の取得はこうなる。県庁所在地はXML上、capital としている。 For Each Node In XDoc.selectNodes("/records/prefectural/capital")結果は 札幌 青森 鹿児島 那覇 となる。 県名も県庁所在地も関係なく取得 ------------- 県名も県庁所在地も関係あるか!と言う場合はこういうこともできる。要するに、/records/prefectural/以下のものを順次見つけられればよいってことである。 For Each Node In XDoc.selectNodes("/records/prefectural/*")結果は 北海道 札幌 青森 青森 鹿児島 鹿児島 沖縄 那覇 となる。 次回は、もう少しバリエーションを広げてみる。 同じテーマの最新記事
2009年08月13日VBAでXMLを使う 体験:XMLファイル読み込み
お次は XMLファイルをとりあえず読み混む、という作業を行う。
内容を読む、というのは次のステップとする。 ・XMLを読み込むためのブックを、任意のフォルダ、任意のファイル名で作成する。新規作成の場合、必ず一度は保存し、ファイルの実態を作成すること。また、参照設定も忘れていないかを確認すること。 ・前回作成した sample01.xml を上記の[任意のフォルダ]に入れる。 ・上記の任意のファイルのIDEでVBAのコードを書く。今回は標準モジュールを追加し、そこに書くことにしよう。 Sub ReadXML() こんな感じ。 読み込みがうまくいけば「読み込み成功」が出るし、うまく行かなければエラーの原因が出る。 わざとエラーになるようにXMLを加工し、どういうエラーが出るかを試してみると、トラブル時の対応に強くなるのでお勧めする。 正常に読めることが確認できれば、次は内容の読み取りである。 同じテーマの最新記事
2009年08月11日VBAでXMLを使う 準備:XMLファイル
で、お次にサンプルのXMLファイルを作る。
よく動物とか果物、野菜なんかをサンプルにすると、個人的に萎えてしまうので、都道府県にする。
こんな感じ。面倒なので南北からそれぞれ2つ。これを sample01.xml とかいう名前で保存しておく。 次回はこれを読み込んでみよう。 同じテーマの最新記事
|
エンジニアが作る最新ITブログ トップ>エンジニアの発信する【XML】