コンテンツにスキップ

XML_GET系

関数名 引数 戻り値
XML_GET any, string(, int, int) int
any, string, ref string[](, int) int
XML_GET_BYNAME string, string(, int, int) int
string, string, ref string[](, int) int

API

1. int XML_GET xml, xpath(, doOutput, outputType)
2. int XML_GET xml, xpath, ref outputArray(, outputType)
3. int XML_GET_BYNAME xmlName, xpath(, doOutput, outputType)
4. int XML_GET_BYNAME xmlName, xpath, ref outputArray(, outputType)
xpathの規則でxml(xmlName)からノードを選択し、合致結果数を返します(XPathについて)。

書式12には、xmlが文字列である場合、その内容からノードを選択します。xmlが整数である場合、xmlを文字列に変換した結果(TOSTR)をキーとして、保存したXmlDocumentからノードを選択します。XmlDocumentが存在していない場合、-1を返します。

書式34には、xmlNameをキーとして、保存したXmlDocumentからノードを選択します。

なお,

  • 書式13: doOutput0または省略した場合、合致結果数のみ返し、そうでない場合、合致結果をRESULTSに代入します。

  • 書式24: 合致結果をoutputArrayに代入します。

outputTypeの値によって,代入結果を決めます。

  • 1: ノードのInnerText
  • 2: ノードのInnerXml
  • 3: ノードのOuterXml
  • 4: ノードのName
  • 他または省略: ノードのValue

注意

実際のXmlNodeインスタンスを得ることではないため、xpathの先頭に「//」の表現を使っても意味がありません。

ヒント

命令、式中関数両方対応しています。

MAIN.ERB
@SYSTEM_TITLE
    #DIMS xml = "<test><dir readonly='false'><file name='A.txt'>InnerText内容A</file></dir><file name='B.txt'>InnerText内容B</file></test>"
    #DIMS nodes, 10
    XML_DOCUMENT 0, xml

    ; 直接文字列から探索
    PRINTFORML 結果数:{XML_GET(xml, "/test//file", 1, 3)}
    PRINTFORML InnerXml(1):%RESULTS:0%
    PRINTFORML InnerXml(2):%RESULTS:1%

    ; XmlDocumentから探索
    PRINTFORML 結果数:{XML_GET(0, "/test//file/@name", 1)}
    PRINTFORML Value(1):%RESULTS:0%
    PRINTFORML Value(2):%RESULTS:1%
    PRINTFORML 結果数:{XML_GET(0, "/test/dir/*[1]", nodes, 1)}
    PRINTFORML InnerText:%nodes:0%

    ONEINPUT
結果
結果数:2
InnerXml(1):<file name="A.txt">InnerText内容A</file>
InnerXml(2):<file name="B.txt">InnerText内容B</file>
結果数:2
Value(1):A.txt
Value(2):B.txt
結果数:1
InnerText:InnerText内容A