Rexx-xml

提供:Dev Guides
移動先:案内検索

Rexx-XML

XMLは、オペレーティングシステムや開発言語に関係なく、プログラマが他のアプリケーションで読み取れるアプリケーションを開発できるようにする、移植可能なオープンソース言語です。 これは、アプリケーション間でデータを交換するために使用される最も一般的な言語の1つです。

XMLとは何ですか?

拡張マークアップ言語XMLは、HTMLやSGMLによく似たマークアップ言語です。 これは、World Wide Web Consortiumによって推奨されており、オープンスタンダードとして利用できます。 XMLは、SQLベースのバックボーンを必要とせずに、少量から中量のデータを追跡するのに非常に役立ちます。

すべてのXMLコード例について、次の単純なXMLファイル movies.xml を使用して、XMLファイルを作成し、その後ファイルを読み取ります。

<collection shelf = "New Arrivals">
   <movie title = "Enemy Behind">
      <type>War, Thriller</type>
      <format>DVD</format>
      <year>2003</year>
      <rating>PG</rating>
      <stars>10</stars>
      <description>Talk about a US-Japan war</description>
   </movie>

   <movie title = "Transformers">
      <type>Anime, Science Fiction</type>
      <format>DVD</format>
      <year>1989</year>
      <rating>R</rating>
      <stars>8</stars>
      <description>A schientific fiction</description>
   </movie>

   <movie title = "Trigun">
      <type>Anime, Action</type>
      <format>DVD</format>
      <year>1986</year>
      <rating>PG</rating>
      <stars>10</stars>
      <description>Vash the Stam pede!</description>
   </movie>

   <movie title = "Ishtar">
      <type>Comedy</type>
      <format>VHS</format>
      <year>1987</year>
      <rating>PG</rating>
      <stars>2</stars>
      <description>Viewable boredom </description>
   </movie>
</collection>

入門

デフォルトでは、xml機能はRexxインタープリターに含まれていません。 RexxでXMLを使用するには、次の手順に従う必要があります。

XML関数の読み込み

上記のセクションのすべてのファイルがダウンロードされ、正常に登録されたら、次のステップは、Rexx XML関数をロードするコードを記述することです。 これは、次のコードで実行されます。

rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')

if rcc then do
   say rxfuncerrmsg()
   exit 1
end
call xmlloadfuncs

上記のプログラムについては、次のことに注意することができます-

  • 関数 rxfuncadd は、外部ライブラリをロードするために使用されます。 xmlloadfuncs 関数は、 rexxxml ファイル内のすべてのライブラリをメモリにロードするために使用されます。
  • rcc <> 0の値の場合、エラーになります。 このために、 rxfuncerrmsg を呼び出して、エラーメッセージの詳細を提供できます。
  • 最後に xmlloadfuncs を呼び出して、Rexxプログラムですべてのxml関連機能を有効にできるようにします。

RexxでXMLに使用できるさまざまな*メソッドを見てみましょう。

xmlVersion

このメソッドは、システムで使用されているXMLおよびXSLTライブラリのバージョンを返します。

構文

xmlVersion()

パラメーター

None

戻り値

このメソッドは、システムで使用されているXMLおよびXSLTライブラリのバージョンを返します。

rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')

if rcc then do
   say rxfuncerrmsg()
   exit 1
end
call xmlloadfuncs
say xmlVersion()

上記のプログラムを実行すると、次の結果が得られます。 これも、システムで使用されているXMLライブラリのバージョンに依存します。

出力

1.0.0 20631 10126

xmlParseXML

この関数は、関数に送信されたXMLデータを解析するために使用されます。 ドキュメントツリーは、関数によって返されます。

構文

xmlParseXML(filename)

パラメーター

  • ファイル名-これは解析する必要があるXMLファイルの名前です。

戻り値

ドキュメントツリーは、関数によって返されます。 エラーがある場合、Elseは0を返します。

rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')

if rcc then do
   say rxfuncerrmsg()
   exit 1
end
call xmlloadfuncs

say xmlVersion()
sw = xmlParseXML('test.xml')

出力

一般的な出力はありません。

xmlFindNode

このメソッドは、渡された* XPath式*を評価します。 これは、ドキュメントツリーを解析して、 nodeset を生成し、さらに処理できるようにするために使用されます。

構文

xmlParseXML(XPath,document)

パラメーター

  • XPath -これは、xmlファイル内のノードのパスです。
  • document -このXMLドキュメント

戻り値

XPath式を評価し、後で使用できるノードセットとして結果を返します。

rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')

if rcc then do
   say rxfuncerrmsg()
   exit 1
end
call xmlloadfuncs

say xmlVersion()
document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
say xmlNodesetCount(nodeset)

上記のプログラムを実行すると、次の結果が得られます。

出力

4

出力は、xmlリスト内のムービーノードの数を示しています

xmlEvalExpression

以下のメソッドは、XPath式を評価し、結果として文字列を返すために使用されます。

構文

xmlParseXML(XPath,Node)

パラメーター

  • XPath -これは、xmlファイル内のノードのパスです。
  • document -特定のノード要素。

戻り値

送信されたXPath式に基づいて文字列が返されます。

rcc = rxfuncadd('XMLLoadFuncs', 'rexxxml', 'xmlloadfuncs')

if rcc then do
   say rxfuncerrmsg()
   exit 1
end
call xmlloadfuncs

document = xmlParseXML('test.xml')
nodeset = xmlFindNode('//movie', document)
do j = 1 to xmlNodesetCount(nodeset)
value = xmlEvalExpression('type', xmlNodesetItem(nodeset, j))
say value
end

上記のプログラムを実行すると、次の結果が得られます。

出力

War, Thriller
Anime, Science Fiction
Anime, Action
Comedy