Please note that the recommended version of Scilab is 2024.1.0. This page might be outdated.
See the recommended documentation of this function
XML Objects
異なるのXMLオブジェクトのプロパティを記述する
説明
ノードおよびそのプロパティをアクセスおよび修正可能です.
XML文書
XML文書は以下の2つのプロパティを有します: root および url
root: 文書のルート要素で, XML要素です;
url: urlは文字列で, 存在する場合は文書のURL,未定義の場合は空文字列となります.
doc = xmlReadStr("<root><a att=""foo"" rib=""bar""><b>Hello</b></a></root>"); doc.root = doc.root.children(1); xmlDump(doc) doc.url = TMPDIR+"/foo.xml"; doc xmlWrite(doc); xmlDelete(doc);
XML要素
XML要素は以下の7つのプロパティを有します:
name: タグ名;
namespace: XML名前空間オブジェクト;
content: ノードの内容を表す文字列. 例えば,<A>hello <B>world</B> というノードA の内容は文字列 "hello world"となります.
type: ノードの型を表す文字列. 以下の値のどれかとなります: "XML_ELEMENT_NODE", "XML_ATTRIBUTE_NODE", "XML_TEXT_NODE", "XML_CDATA_SECTION_NODE", "XML_ENTITY_REF_NODE", "XML_ENTITY_NODE", "XML_PI_NODE", "XML_COMMENT_NODE", "XML_DOCUMENT_NODE", "XML_DOCUMENT_TYPE_NODE", "XML_DOCUMENT_FRAG_NODE", "XML_NOTATION_NODE", "XML_HTML_DOCUMENT_NODE", "XML_DTD_NODE", "XML_ELEMENT_DECL", "XML_ATTRIBUTE_DECL", "XML_ENTITY_DECL", "XML_NAMESPACE_DECL", "XML_XINCLUDE_START", "XML_XINCLUDE_END", "XML_DOCB_DOCUMENT_NODE".
parent: 親XML要素;
attributes: XML属性オブジェクトとして表したノード属性;
children: XMLノードリストオブジェクトとして表した子要素.
line: XML要素の線の定義.
doc = xmlReadStr("<root xmlns:bar=""http://www.scilab.org/""><bar:a att=""foo"" rib=""bar""><b>Hello</b><c> world</c></bar:a></root>"); first = doc.root.children(1); b = first.children(1); // "new_attribute"という名前の属性を新規に追加 first.attributes.new_attribute = "value"; // firstの子の名前空間を表示 first.namespace // ノードの内容を表示 first.content // bは親を有します b.parent // firstに子を追加できます. first.children(3) = b // 整数でない添字により挿入を行えます. first.children(1.5) = "<d> Scilab</d>" // firstの子が上の行で定義されています... b.line xmlDump(first) xmlDelete(doc);
XML属性
XML属性は,属性の名前を属性の値にマップするハッシュテーブルの一種です. 属性の値は,このオブジェクトのフィールドとして属性の名前,または 1から属性の大きさまでの添字番号によりアクセスや修正が可能です.
doc = xmlReadStr("<root xmlns:bar=""http://www.scilab.org/""><bar:a att=""foo"" rib=""bar""><b>Hello</b><c> world</c></bar:a></root>"); first = doc.root.children(1); // 属性を読み込みます first.attributes.att // 空の属性を設定します first.attributes.att = ""; // 新しい属性を追加します first.attributes.hello = "world"; // 添字を使用します first.attributes(1) = "Bonjour"; first.attributes(1) xmlDump(first) xmlDelete(doc);
XML名前空間
XML名前空間は以下の2つのプロパティを有します: href および prefix
href: 名前空間hrefを表す文字列;
prefix: この名前空間で使用する接頭辞を表す文字列.
doc = xmlReadStr("<root xmlns:bar=""http://www.scilab.org/""><bar:a att=""foo"" rib=""bar""><b>Hello</b><c> world</c></bar:a></root>"); ns = doc.root.children(1).namespace; ns.href ns.prefix xmlDelete(doc);
XMLノードリスト
XMLノードリストはある要素の子に番号を付ける際に使用される 型です.各要素は整数の添字によりアクセスできます. これはリストであるため,doubleの添字により, 新しい要素をこのリストに挿入することができます.
リストの大きさは,'size'フィールドにより取得できます.
リストの各ノードの名前または内容は'name'または'content'フィールド により取得できます.
doc = xmlReadStr("<root><a>Hello</a><b> world</b></root>"); c = doc.root.children; // 2つの要素があることが確認できます c.size // 最初の要素を読み込みます xmlDump(c(1)) // 特定の要素を他の要素で置換します c(1) = "<c>Hello</c>" // 新しい要素を最初の要素と二番目の要素の間に挿入します c(1.5) = "<d> Scilab</d>" // 1.5 or 1.234... // 新しい要素を末尾またはリストの先頭に挿入します c(0) = "<e>Head </e>" c(217) = "<f> Tail</f>" xmlDump(c) // ノードの名前を取得します c.name // ノードの内容を取得します c.content xmlDelete(doc);
XML XPath結果セット
XMLノードセットは,XPathクエリから返されたオブジェクトです. 新しい要素を挿入したり,既存の要素を置換することはできません. できることは整数の添字により要素を取得することのみです.
このセットの大きさは'size'フィールドにより取得できます.
doc = xmlReadStr("<root><a><b>Hello</b></a><a>World</a></root>"); s = xmlXPath(doc, "//a") s.size s(1).content s(2).content // または ... s.content xmlDelete(doc);
XML検証ファイル
XML検証ファイルは文書の検証に使用されるオブジェクトです. DTD, Relax NGまたは schemaにより検証できます.
doc = xmlRead("SCI/modules/xml/tests/unit_tests/library.xml"); dtd = xmlDTD("SCI/modules/xml/tests/unit_tests/library.dtd"); schema = xmlSchema("SCI/modules/xml/tests/unit_tests/library.xsd"); rng = xmlRelaxNG("SCI/modules/xml/tests/unit_tests/library.rng"); // 検証 xmlValidate(doc, dtd); xmlValidate(doc, rng); xmlValidate(doc, schema); xmlDelete("all");
参照
- xmlRead — ローカルまたはリモートファイルからXMLストリームを読み込む
- xmlReadStr — 文字列からXMLツリーを読み込む
- xmlElement — XML要素を新規に作成する
- xmlDocument — XML文書を新規に作成
- xmlNs — XML名前空間を新規に作成する
- xmlDTD — XML DTDオブジェクトを作成
- xmlSchema — XMLスキーマオブジェクトを作成する
- xmlRelaxNG — XML Relax NGオブジェクトを作成する
履歴
Version | Description |
5.4.0 | XMLモジュールが導入されました. |
Report an issue | ||
<< XML Management | XML Management | xmlAddNs >> |