|
データ操作
|
|
作者 新井 裕貴
|
|
2008年5月20日(火曜日) 00:00 |
|
XMLフォーマットを扱うために、Curlでは拡張コンポーネントのWSDKにDOM(Document Object Model)機能が用意されています。DOMは、XMLをツリー構造として扱い、これを「DOMツリー」といいます。XML全体を解析してDOMツリーとしてメモリ上に保存するのでデータの多いXMLを解析する場合は多くのメモリを消費します。
ここではDOMパーサーを利用したXML解析方法について、下記サンプルXMLを用いて説明します。
|
<RecordSet> <Record name="AAA"> <Value>"123"</Value> <Value>"456"</Value> </Record> <Record name="BBB"> <Value>"xyz"</Value> </Record> </RecordSet>
|
DOMパーサーを使用するためには、まずWSDKをインストール及びデリゲートする必要があります。下記サンプルは、XMLから取得した値をoutputプロシージャにて結果表示させています。
XMLの読取り
XMLフォーマットをデータモデルに変換する場合、build-xmlプロシージャを使用します。build-xmlプロシージャの戻り値はXDMDocumentオブジェクトになります。build-xmlプロシージャで解析可能なデータはUrl、StringInterface、TextInputStream、ByteInputStreamです。
| let xml:XDMElement = {build-xml preserve-whitespace? = true, XMLデータ} |
XMLの解析
XMLを解析するために、まずXDMElementのrootでルートの要素を取得します。また、各子要素のを取得するにはget-elementsメソッドを実行します。取得した要素から属性を取得するにはattributes、テキストを取得するにはget-textを利用します。以下にコメント入りでサンプルを掲載します。
|
||build-xmlプロシージャを用いて、XMLをのCurlのXML構造体オブジェクトに変換します。 ||更に、build-xmlの戻り値であるXDMDocumentから、そのXMLのルートとなるエレメントを取得します。 let root:XDMElement = {build-xml preserve-whitespace? = false, XMLデータのURL}.root
||以下XMLの解析 ||get-elementsメソッドで、エレメントを取得します。 let record-elements:{Array-of XDMElement} = {root.get-elements} {for record-element:XDMElement in record-elements do ||attributesアクセッサで、属性を取得します。 {output "Record attribute = " & record-element.attributes["name"]} let value-elements:{Array-of XDMElement} = {record-element.get-elements} {for value-element in value-elements do ||get-textメソッドでテキストを取得します。 {output " Value text = " & {value-element.get-text}} } }
|
実行結果
Record attribute = AAA Value text = "123" Value text = "456" Record attribute = BBB Value text = "xyz" |
参考サイト
XML Data
Transforming XML
Using XPath
|
|
最終更新 ( 2008年8月28日(木曜日) 12:42 )
|