名前空間付きのXMLのエレメントの取得方法は以前書いたが、名前空間付きの属性はどのように取得したらいいのだろうか?

下のような例で、sheet要素のr:id属性を取得してみようと思う。
(どこかで見たことあるようなXMLと思った方は、そう、そのデータを解析しているのです。)

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  <workbook
    xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"
    xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships">
  <fileVersion appName="xl" lastEdited="4" lowestEdited="4" rupBuild="4505" />
  <workbookPr defaultThemeVersion="124226" />
  <bookViews>
  <workbookView xWindow="120" yWindow="120" windowWidth="14940" windowHeight="13500" />
  </bookViews>
  <sheets>
  <sheet name="Sheet1" sheetId="1" r:id="rId1" />
  <sheet name="Sheet2" sheetId="2" r:id="rId2" />
  <sheet name="Sheet3" sheetId="3" r:id="rId3" />
  </sheets>
  <calcPr calcId="114210" />
</workbook>

[as]
var _xml:XML = XML(data); <– ここに上の例のXMLがある前提。
var _ns:Namespace = _xml.namespace();
var _nsR:Namespace = _xml.namespace(“r”);

trace(_xml._ns::sheets._ns::sheet.(@sheetId == “1”).@_nsR::id);
[/as]

という感じで、通常のエレメントと同じように、@_nsR::id のようにすればいいようです。
ちなみに、XMLから値を取得するときに以下のように、条件を記述できるのです。

sheetId属性が”1″のsheet要素を取得するという意味です。
[as]
_xml._ns::sheets._ns::sheet.(@sheetId == “1”);
[/as]
これ、最近までしりませんでした。

お仕事のご依頼・相談を承ります
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら

Leave a Reply

お仕事のご依頼・相談
この記事に関連するお仕事のご依頼やご相談をお待ちしております。 詳しくは、こちら
ソフトウェア&ライブラリ




ライブラリ
airxmail(en)
AIR版メール送受信ライブラリ
airxzip
AIR版ZIP圧縮・解凍ライブラリ
執筆書籍
本、雑誌等

WEB記事:CodeZine
執筆記事はこちら
カレンダー
2009年12月
« 11月   1月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

カスタム検索
RSS
Add to Google < !–adsense–>
アーカイブ
カテゴリ
にほんブログ村 IT技術ブログへ