コンテンツにスキップ

XML_SET系

関数名 引数 戻り値
XML_SET int, string, string(, int, int) int
ref string, string, string(, int, int) int
XML_SET_BYNAME string, string, string(, int, int) int

API

1. int XML_SET xmlId, xpath, value(, doSetAll, outputType)
2. int XML_SET ref xml, xpath, value(, doSetAll, outputType)
3. int XML_SET_BYNAME xmlName, xpath, value(, doSetAll, outputType)
xpathの規則でxmlからノードを選択、合致ノードにvalueを代入し、合致結果数を返します(XPathについて)。
doSetAll0または省略、かつ合致結果数が1以上である場合、代入は行われません。失敗した場合、0を返す。

  1. xmlIdを文字列に変換した結果(TOSTR)をキーとして、保存したXmlDocumentからノードを選択します。XmlDocumentが存在していない場合、-1を返します。
  2. xmlからノードを選択し、結果をxmlに代入します。xmlは変数でなければなりません。
  3. xmlNameをキーとして、保存したXmlDocumentからノードを選択します。XmlDocumentが存在していない場合、-1を返します。

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

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

注意

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

ヒント

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

MAIN.ERB
@SYSTEM_TITLE
    #DIMS xml = "<test><file name='A.txt'>InnerText内容A</file><a>A</a></test>"

    ; 直接文字列から探索
    PRINTFORML 結果数:{XML_SET(xml, "/test/*", "B", 1, 1)}
    PRINTSL xml
    XML_DOCUMENT 0, xml

    ; XmlDocumentから探索
    PRINTFORML 結果数:{XML_SET(0, "/test/file/@name", "X.xml")}
    XML_GET 0, "/test/file/@name", 1
    PRINTSL RESULTS

    ONEINPUT
結果
結果数:2
<test><file name="A.txt">B</file><a>B</a></test>
結果数:1
X.xml