Home English

Kuina-chan

くいなちゃんJun 23, 2018


プログラミング言語Kuin」の「xmlライブラリ」についてです。

xmlライブラリ

XMLを読み書きするライブラリ「xml.kn」を解説します。
xmlライブラリに用意されているものはxmlライブラリの通りです。
xmlライブラリ
名前 説明
xml@makeXml XMLクラスのインスタンスをファイルから作成する関数
xml@makeXmlEmpty XMLクラスのインスタンスを新規に作成する関数
xml@Node XMLのツリーを操作するためのクラス
xml@Xml XMLクラス

xml@makeXml

「xml@makeXml」は、XMLクラスのインスタンスをファイルから作成する関数です(xml@makeXml関数の定義)。
xml@makeXml関数の定義

 func makeXml(path: []char): xml@Xml

path XMLファイルのパス
戻り値 XMLクラスのインスタンス。 読み込みに失敗した場合はnullが返る

xml@makeXmlEmpty

「xml@makeXmlEmpty」は、XMLクラスのインスタンスを新規に作成する関数です(xml@makeXmlEmpty関数の定義)。
xml@makeXmlEmpty関数の定義

 func makeXmlEmpty(): xml@Xml

戻り値 XMLクラスのインスタンス
作成したXMLのツリーは空になっています。

xml@Node

「xml@Node」はXMLのツリーを操作するためのクラスで、定義はxml@Nodeクラスの定義の通りです。
xml@Nodeクラスの定義
名前 説明
xml@Node.addChild 子ノードを追加するメソッド
xml@Node.delChild 子ノードを削除するメソッド
xml@Node.findChild 子ノードを先頭から検索するメソッド
xml@Node.findChildLast 子ノードを末尾から検索するメソッド
xml@Node.findNext 次の兄弟ノードを検索するメソッド
xml@Node.findPrev 前の兄弟ノードを検索するメソッド
xml@Node.firstChild 最初の子ノードを取得するメソッド
xml@Node.getAttr 属性を取得するメソッド
xml@Node.getName ノードの名前(タグ名)を取得するメソッド
xml@Node.getValue ノードの値(タグで囲まれた中身)を取得するメソッド
xml@Node.insChild 子ノードを挿入するメソッド
xml@Node.lastChild 最後の子ノードを取得するメソッド
xml@Node.next 次の兄弟ノードを取得するメソッド
xml@Node.parent 親ノードを取得するメソッド
xml@Node.prev 前の兄弟ノードを取得するメソッド
xml@Node.setAttr 属性を設定するメソッド
xml@Node.setName ノードの名前(タグ名)を設定するメソッド
xml@Node.setValue ノードの値(タグで囲まれた中身)を設定するメソッド

xml@Node.addChild

「xml@Xml.addChild」は子ノードを追加するメソッドです(xml@Xml.addChildメソッドの定義)。
xml@Xml.addChildメソッドの定義

 func addChild(name: []char): xml@Node

name ノードの名前(タグ名)。 nullであってはならない
戻り値 追加したノード

xml@Node.delChild

「xml@Xml.delChild」は子ノードを削除するメソッドです(xml@Xml.delChildメソッドの定義)。
xml@Xml.delChildメソッドの定義

 func delChild(node: xml@Node)

node 削除する子ノード。 nullであってはならない
nodeが子ノードでなかった場合は何もせずに抜けます。

xml@Node.findChild

「xml@Xml.findChild」は子ノードを先頭から検索するメソッドです(xml@Xml.findChildメソッドの定義)。
xml@Xml.findChildメソッドの定義

 func findChild(name: []char): xml@Node

name 検索するノードの名前(タグ名)
戻り値 見つかった子ノード。 1つも見つからなかった場合はnullが返る

xml@Node.findChildLast

「xml@Xml.findChildLast」は子ノードを末尾から検索するメソッドです(xml@Xml.findChildLastメソッドの定義)。
xml@Xml.findChildLastメソッドの定義

 func findChildLast(name: []char): xml@Node

name 検索するノードの名前(タグ名)
戻り値 見つかった子ノード。 1つも見つからなかった場合はnullが返る

xml@Node.findNext

「xml@Xml.findNext」は次の兄弟ノードを検索するメソッドです(xml@Xml.findNextメソッドの定義)。
xml@Xml.findNextメソッドの定義

 func findNext(name: []char): xml@Node

name 検索するノードの名前(タグ名)
戻り値 見つかった子ノード。 1つも見つからなかった場合はnullが返る

xml@Node.findPrev

「xml@Xml.findPrev」は前の兄弟ノードを検索するメソッドです(xml@Xml.findPrevメソッドの定義)。
xml@Xml.findPrevメソッドの定義

 func findPrev(name: []char): xml@Node

name 検索するノードの名前(タグ名)
戻り値 見つかった子ノード。 1つも見つからなかった場合はnullが返る

xml@Node.firstChild

「xml@Xml.firstChild」は最初の子ノードを取得するメソッドです(xml@Xml.firstChildメソッドの定義)。
xml@Xml.firstChildメソッドの定義

 func firstChild(): xml@Node

戻り値 最初の子ノード。 子が1つも存在しない場合はnullが返る

xml@Node.getAttr

「xml@Xml.getAttr」は属性を取得するメソッドです(xml@Xml.getAttrメソッドの定義)。
xml@Xml.getAttrメソッドの定義

 func getAttr(attrName: []char): []char

attrName 属性の名前
戻り値 attrNameで指定した属性の値。 属性が存在しなかった場合はnullが返る

xml@Node.getName

「xml@Xml.getName」はノードの名前(タグ名)を取得するメソッドです(xml@Xml.getNameメソッドの定義)。
xml@Xml.getNameメソッドの定義

 func getName(): []char

戻り値 ノードの名前(タグ名)

xml@Node.getValue

「xml@Xml.getValue」はノードの値(タグで囲まれた中身)を取得するメソッドです(xml@Xml.getValueメソッドの定義)。
xml@Xml.getValueメソッドの定義

 func getValue(): []char

戻り値 ノードの値(タグで囲まれた中身)。 タグの中身が空の場合はnullが返る
「<a>b<c />d</a>」のように、タグの中にテキストとタグが入り混じっていた場合、最初のタグまでのテキスト("b")を「ノードaの値」として扱い、それ以降にあるテキスト("d")はデータとして維持はされますが取得も設定もできません。
このようにタグの中にテキストとタグが入り混じることは、データ構造が複雑になるため避けたほうが無難です。

xml@Node.insChild

「xml@Xml.insChild」は子ノードを挿入するメソッドです(xml@Xml.insChildメソッドの定義)。
xml@Xml.insChildメソッドの定義

 func insChild(node: xml@Node, name: []char): xml@Node

node 挿入する位置を示す子ノード。 nullであってはならない
name ノードの名前(タグ名)。 nullであってはならない
戻り値 挿入したノード
nodeが子ノードでなかった場合は何もせずに抜けます。

xml@Node.lastChild

「xml@Xml.lastChild」は最後の子ノードを取得するメソッドです(xml@Xml.lastChildメソッドの定義)。
xml@Xml.lastChildメソッドの定義

 func lastChild(): xml@Node

戻り値 最後の子ノード。 子が1つも存在しない場合はnullが返る

xml@Node.next

「xml@Xml.next」は次の兄弟ノードを取得するメソッドです(xml@Xml.nextメソッドの定義)。
xml@Xml.nextメソッドの定義

 func next(): xml@Node

戻り値 次の兄弟ノード。 存在しない場合はnullが返る

xml@Node.parent

「xml@Xml.parent」は親ノードを取得するメソッドです(xml@Xml.parentメソッドの定義)。
xml@Xml.parentメソッドの定義

 func parent(): xml@Node

戻り値 親ノード。 ルートノードに対してこのメソッドを呼び出した場合はnullが返る

xml@Node.prev

「xml@Xml.prev」は前の兄弟ノードを取得するメソッドです(xml@Xml.prevメソッドの定義)。
xml@Xml.prevメソッドの定義

 func prev(): xml@Node

戻り値 前の兄弟ノード。 存在しない場合はnullが返る

xml@Node.setAttr

「xml@Xml.setAttr」は属性を設定するメソッドです(xml@Xml.setAttrメソッドの定義)。
xml@Xml.setAttrメソッドの定義

 func setAttr(attrName: []char, attrValue: []char)

attrName 属性の名前
attrValue attrNameで指定した属性に設定する値。 nullを指定すると属性を削除する
attrNameで指定した属性が既に存在する場合は、新しい値で上書きします。
attrValueにnullを指定すると、既存の属性を削除しますが、そのときattrNameで指定した属性が存在しなかった場合は、何もせずに抜けます。

xml@Node.setName

「xml@Xml.setName」はノードの名前(タグ名)を設定するメソッドです(xml@Xml.setNameメソッドの定義)。
xml@Xml.setNameメソッドの定義

 func setName(name: []char)

name ノードの名前(タグ名)
ノードの名前(タグ名)を、nameで指定した名前で上書きします。

xml@Node.setValue

「xml@Xml.setValue」はノードの値(タグで囲まれた中身)を設定するメソッドです(xml@Xml.setValueメソッドの定義)。
xml@Xml.setValueメソッドの定義

 func setValue(value: []char)

value ノードの値(タグで囲まれた中身)。 nullを指定するとタグの中身が空に設定される
タグの中にテキストとタグが入り混じっていた場合は、タグの部分を残してテキストの部分のみが書き換わります。

xml@Xml

「xml@Xml」はXMLのツリーを保持するクラスで、定義はxml@Xmlクラスの定義の通りです。
xml@Xmlクラスの定義
名前 説明
xml@Xml.root 最初のルートノードを取得するメソッド
xml@Xml.save XMLファイルに保存するメソッド

xml@Xml.root

「xml@Xml.root」はルートノードを取得するメソッドです(xml@Xml.rootメソッドの定義)。
xml@Xml.rootメソッドの定義

 func root(): xml@Node

戻り値 ルート
このルートノードとは、XMLファイル内の一番外側のタグのことではなく、それら一番外側のタグを子ノードとして持つ、さらにもう一段階外側にあるノードです。 XMLでは一番外側に複数のタグが存在できるため、それらを束ねるルートノードを別途用意しています。
ルートノードの最初の子ノードには通常、「<?xml version="1.0" encoding="UTF-8"?>」といったようなプロローグが存在しています。 このため通常操作する子ノードは2つ目以降になります。
ルートノード自体には「ノードの名前(タグ名)」「ノードの値(タグで囲まれた中身)」「属性」などが存在しません。 このような項目を各メソッドを使ってルートノードに対して設定しようとすると、何もせずに抜けます。

xml@Xml.save

「xml@Xml.save」はXMLファイルに保存するメソッドです(xml@Xml.saveメソッドの定義)。
xml@Xml.saveメソッドの定義

 func save(path: []char, compact: bool): bool

path 保存するXMLファイルのパス
compact 改行やインデントを出力しないならtrue、出力するならfalse
戻り値 保存に成功したらtrue、失敗したらfalse
1529722784ja