Skip to content

XML_REMOVENODE系

関数名 引数 戻り値
XML_REMOVENODE int, string(, int) int
ref string, string(, int) int
XML_REMOVENODE_BYNAME string, string(, int) int

API

1. int XML_REMOVENODE xmlId, xpath(, doSetAll)
2. int XML_REMOVENODE ref xml, xpath(, doSetAll)
3. int XML_REMOVENODE_BYNAME xmlName, xpath(, doSetAll)
指定したXMLに対して、xpathで選択した要素ノード(ルートノードは無効)を削除します(XPathについて)。
doSetAll0または省略し、かつ合致結果数が1以上である場合、削除は行われません。成功した場合、合致結果の数を返す。失敗した場合、0を返す。

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

注意

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

ヒント

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

MAIN.ERB
@SYSTEM_TITLE
    #DIMS xml = "<xml><brother/><brother/><sister/></xml>"

    XML_DOCUMENT 0, xml
    PRINTFORML {XML_REMOVENODE(xml, "/xml/brother", 1)} -> %xml%

    PRINTFORML {XML_REMOVENODE(0, "/xml/sister", 1)}
    PRINTSL XML_TOSTR(0)

    ONEINPUT
結果
2 -> <xml><sister /></xml>
1
<xml><brother /><brother /></xml>