Archive for 2009/8/19
たとえば、こんなXMLがある。
<office :document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:ooo="http://openoffice.org/2004/office" office:version="1.2">
</office><office :meta>
<meta :creation-date>2009-08-11T09:32:05</meta>
<dc :date>2009-08-11T09:35:06.48</dc>
<meta :editing-duration>PT00H03M08S</meta>
<meta :editing-cycles>2</meta>
<meta :generator>OpenOffice.org/3.0$Win32 OpenOffice.org_project/300m9$Build-9358</meta>
<dc :description>これはOpenOfficeのドキュメントです。</dc>
<meta :keyword>OpenOffice</meta>
<meta :keyword>XML</meta>
<meta :keyword>操作</meta>
<dc :subject>サブジェクト</dc>
<dc :title>これはタイトル</dc>
<meta :document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="1" meta:paragraph-count="13" meta:word-count="665" meta:character-count="1725"/>
<meta :user-defined meta:name="Info 1"/>
<meta :user-defined meta:name="Info 2"/>
<meta :user-defined meta:name="Info 3"/>
<meta :user-defined meta:name="Info 4"/>
</office>
これは、OpenOfficeで作ったドキュメントファイル(odt)ファイルのから取り出したmeta.xmlだ。
通常、名前空間がなければ
var metas:XMLList = _xml.title;
のようにすればよい。
しかし、名前空間があるXMLの場合には、この名前空間を指定しなければいけない。
では、<dc:title />のように名前空間がある要素の取得は以下のようにする。
var _dcNS:Namespace = _xml.namespace("dc");
trace(_xml.dcNS::title); // これで「これはタイトル」の文字列が出力される
初めの例でいえば、_xml.title の title が _dcNS::title のようにNamespaceの変数名 + “::” + 要素名 にすればいいのだ。
これが、もっと深い子になると、非常に読みづらくなる。
(※:_xmlは上の内容のXMLオブジェクトです。)

