ぼく用あれこれまとめ

TinyXML-2 使い方

最終更新:

bokuyo

- view
管理者のみ編集可

TinyXML-2 使い方

  • 導入方法は TinyXML-2 導入メモ を参考に。
  • 以下にテストコードを書いていきます。次の3つを include している前提で書いていきます。
#include <iostream>
#include <string>
#include "tinyxml2.h"

.xml ファイルの読み込み - tinyxml2::XMLDocument::LoadFile

tinyxml2::XMLDocument doc;
doc.LoadFile( "test.xml" );

.xml ファイルの内容を表示 - tinyxml2::XMLDocument::Print

tinyxml2::XMLDocument doc;
doc.LoadFile( "test.xml" );
doc.Print();

文字列から読み込み - tinyxml2::XMLDocument::Parse

const char * pSource = "<html><head></head><body><p>hello, world!</p></body></html>";
tinyxml2::XMLDocument doc;
doc.Parse(pSource);
doc.Print();

ルート要素の取得と、要素内容の取得 - tinyxml2::XMLDocument::FirstChildElement

const char * pSource = "<title>The Marshmallow Times</title>";
tinyxml2::XMLDocument doc;
doc.Parse(pSource);

tinyxml2::XMLElement * elem = doc.FirstChildElement("title");
std::cout << elem->GetText() << std::endl; // "The Marshmallow Times"

要素内の要素を取得、要素名の取得 - tinyxml2::XMLElement::FirstChildElement

const char * pSource = "<book><title>The Marshmallow Times</title></book>";
tinyxml2::XMLDocument doc;
doc.Parse(pSource);

tinyxml2::XMLElement * elem = doc.FirstChildElement("book")->FirstChildElement("title");
std::cout << elem->Name() << std::endl;    // "title"
std::cout << elem->GetText() << std::endl; // "The Marshmallow Times"

要素の次の要素を取得 - tinyxml2::XMLElement::NextSiblingElement

const char * pSource = "<book><title>The Marshmallow Times</title><author>Lun Lun Yamamoto</author></book>";
tinyxml2::XMLDocument doc;
doc.Parse(pSource);

tinyxml2::XMLElement * elem = doc.FirstChildElement("book")->FirstChildElement();
std::cout << elem->Name() << std::endl;                       // "title"
std::cout << elem->NextSiblingElement()->Name() << std::endl; // "author"

要素の追加 - tinyxml2::XMLElement::NewElement, tinyxml2::XMLElement::InsertEndChild

const char * pSource = "<book><title>The Marshmallow Times</title></book>";
tinyxml2::XMLDocument doc;
doc.Parse(pSource);

tinyxml2::XMLElement * root = doc.FirstChildElement();
tinyxml2::XMLElement * newElement = doc.NewElement( "author" );
root->InsertEndChild(newElement);
doc.Print();
  • tinyxml2::XMLElement::InsertFirstChild で要素の一番最初に挿入できる

現在の XML の内容を文字列として取得する - tinyxml2::XMLPrinter::CStr

const char * pSource = "<book><title>The Marshmallow Times</title></book>";
tinyxml2::XMLDocument doc;
doc.Parse(pSource);

tinyxml2::XMLPrinter streamer;
doc.Print( &streamer );
std::cout << streamer.CStr() << std::endl;

要素の属性(Attribute)を取得 - tinyxml2::XMLElement::Attribute

const char * pSource = "<book title=\"The Marshmallow Times\"/>";
tinyxml2::XMLDocument doc;
doc.Parse(pSource);

tinyxml2::XMLElement * bookElem = doc.FirstChildElement("book");
const char * bookTitle = bookElem->Attribute("title");
if ( nullptr != bookTitle )
  std::cout << bookTitle << std::endl; //The Marshmallow Times

See also