以下にリターン式の例を示します。
文書
<doc> <companyname>fujitsu</companyname> <employee position="manager"> <name>tanaka</name> <id>2000</id> <age>30才</age> </employee> </doc> |
返信される形式ごとの指定例を以下に示します。
リターン項目にパス式を指定した場合、該当する要素ノードをXML形式で返信します。
リターン項目に複数のパス式を指定した場合、指定した順に要素を返信します。
文書ごとにルートタグで囲んで返信します。
該当する要素が存在しない場合、要素は返信されません。
リターン式
/
結果:レコード全体を返信します。
<doc> <companyname>fujitsu</companyname> <employee position="manager"> <name>tanaka</name> <id>2000</id> <age>30才</age> </employee> </doc> |
リターン式
/doc/employee/name
結果
<doc><name>tanaka</name></doc>
リターン式
/doc/employee
結果
<doc><employee position="manager"><name>tanaka</name><id>2000</id><age>30才</age></employee></doc>
リターン式
/doc/companyname,/doc/employee/id
結果
<doc><companyname>fujitsu</companyname><id>2000</id></doc>
注意
リターン式にパス式を記述する場合は、すべてのリターン項目がパス式である必要があります。テキスト式、属性式または単一行関数指定と混在して指定できません。
リターン項目に複数の要素が該当するような指定(複数のパス式指定や、“//”,“*”の指定)をした場合、以下のように、取り出された各要素の対応関係をアプリケーションで判断できなくなります。このような場合、XML文書全体を取り出すか、リターン項目に1つの要素を特定する指定にして取り出してください。
一部の要素が存在しない場合、どの要素が存在しないのか判断できません。
この例では、/doc/president/nameが存在しないため、/doc/employee/nameだけが返却されます。このように、返却された要素が/doc/president/nameなのか、/doc/employee/nameなのか判断できません。
リターン式
/doc/president/name,/doc/employee/name
結果
<doc><name>tanaka</name></doc>
取り出された要素のパスが判断できません。
この例では、どちらのname要素が、/doc/president/nameなのか/doc/employee/nameなのか判断できません。
文書
以下のXML文書がヒットしたものとして説明します。
<doc> <companyname>fujitsu</companyname> <president> <name>kurokawa</name> <id>1849</id> <age>61才</age> </president> <employee> <name>tanaka</name> <id>2000</id> <age>30才</age> </employee> </doc> |
リターン式
//name
結果
<doc><name>kurokawa</name><name>tanaka</name></doc>
リターン項目にテキスト式、属性式または単一行関数指定を指定した場合、該当するテキスト式、属性式または単一行関数指定の結果を文字列で返信します。
リターン項目に複数のパス式を指定した場合、指定した順に文字列を返信します。
該当する要素が存在しない場合は、空エントリとして区切り文字で区切られます。
Java APIの場合
getStringメソッドまたはgetStreamメソッドで検索した結果を取り出す場合
各リターン項目で返す値は、 “,”で区切られます。
指定された要素が1文書内に複数存在する場合は、それぞれの要素が“|”で区切られます。
getStringArrayメソッドで検索した結果を取り出す場合
リターン項目単位にStringの2次元配列として返却します。上位配列の要素数は、リターン式の数です。下位配列の要素数は、指定されたリターン式に該当するデータが1文書内に存在する数です。
.NET APIの場合
DataプロパティまたはgetStreamメソッドで検索した結果を取り出す場合
各リターン項目で返す値は、16進数の0x0001で区切られます。
指定された要素が1文書内に複数存在する場合は、それぞれの要素が16進数の0x0002で区切られます。
getDividedDataメソッドで検索した結果を取り出す場合
リターン項目単位にStringのジャグ配列として返却します。上位配列の要素数は、リターン式の数です。下位配列の要素数は、指定されたリターン式に該当するデータが1文書内に存在する数です。
C APIの場合
各リターン項目で返す値は、文字コード“\001”の文字で区切られます。
指定した要素が1文書内に複数存在する場合は、それぞれの要素が文字コード“\002”の文字で区切られます。
返却される値の最後には必ず“\001”の文字が付加されます。
以下の例では、文字コード“\001”の文字は“\1”、文字コード“\002”の文字は“\2”と表現します。
リターン式
/doc/employee/name/text()
結果
Java APIの場合
tanaka
.NET APIの場合
tanaka
C APIの場合
tanaka \1
リターン式
/doc/employee/@position
結果
Java APIの場合
manager
.NET APIの場合
manager
C APIの場合
manager \1
リターン式
/doc/employee/name/text(),val(/doc/employee/age/text()),/doc/employee/@position
結果
Java APIの場合
tanaka,30,manager
.NET APIの場合
tanaka \1 30 \1 manager
C APIの場合
tanaka \1 30 \1 manager \1
注意
リターン式に複数の要素が該当するような指定(複数のパス式指定や、“//”,“*”の指定など)をした場合、取り出された各要素の対応関係をアプリケーションで判断できなくなります。
以下の文書では、suzukiには“age要素ノード”がないため、3つ目のリターン項目に対する結果の“30”が、tanakaのデータなのか、suzukiのデータなのかわかりません。
文書
<doc> <companyname>fujitsu</companyname> <employee> <name>tanaka</name> <id>2000</id> <age>30才</age> </employee> <employee> <name>suzuki</name> <id>1000</id> </employee> </doc> |
リターン式
/doc/companyname/text(),/doc/employee/name/text(),val(/doc/employee/age/text())
結果
Java APIの場合
fujitsu,tanaka|suzuki,30
.NETの場合
fujitsu \1 tanaka \2 suzuki \1 30
C APIの場合
fujitsu \1 tanaka \2 suzuki \1 30 \1