読者です 読者をやめる 読者になる 読者になる

opamp_sando's blog

クソザコが割りと適当なことを書くためにある備忘録です。あとたまに普通の日記も書きます

QtでXMLを書き出す

前にreadをやったと思うので、今日はXMLの書き出しをやってみる。例によってDomで。

以下サンプル.

QDomDocument doc;

QDomElement newroot = doc.createElement("doc");//このようにdocのcreateElementを使い要素を追加していく。
doc.appendChild(newroot);//docにrootの要素としてnewrootをappendする。

QDomElement hoge = doc.createElement("opamp");//opampという要素を生成
QDomElement piyo = doc.createElement("number");//numberという要素を生成
QDomText number = doc.createTextNode("10");//numberに登録するTextを生成。テキストの内容は"10"

newroot.appendChild(hoge);//root要素にhoge(つまりopamp)を追加
hoge.appendChild(piyo); //hogeにpiyoを追加。(つまりnumber)
piyo.appendChild(number);piyoにテキストを追加(number)

QFile file(path);//保存するファイルを設定
file.open(QIODevice::WriteOnly);

QTextStream out(&file);//ストリームを開いて
doc.save(out,4);//save関数を呼び出す。4はインデント。無難に4にしたけど適当に設定していい。

多分これで次のようなxmlが出力される。

<?xml version='1.0' encoding='UTF8'?>
<doc>
    <opamp>
        <number>10</number>
    </opamp>
</doc>

感覚としてはcreateElementなどcreate*系のクラス関数を使いQDomElementなどを初期化。要素を作っていき最後にappendChildを使って要素を配置.(丁度GUIのLayoutみたいな?)

で、最後に書き出しをすればおk.


また、属性を追加するにはQDomElementクラスのsetAttribute関数を使う。
第一引数には属性の名前、第二引数にはその属性の値を記述する。第一引数はQStringで渡して第二引数はいろいろ大丈夫みたい。intでもおkだしboolでもおkだしQStringでもおk...


そんな感じ。XmlのReadを理解していればWriteは比較的簡単に理解できた。

Firefox ブラウザ無料ダウンロード