私はBoostのプロパティツリーを使ってXMLを読み書きしています。スプレッドシートアプリケーションを使用して、スプレッドシートの内容をxmlに保存しました。私は、XMLは次の形式を使用するために必要なのですので、これは学校の割り当てである:私が書いた簡単なテストプログラムの場合同じキーを持つノードをプロパティツリーに追加する
<?xml version="1.0" encoding="UTF-8"?>
<spreadsheet>
<cell>
<name>A2</name>
<contents>adsf</contents>
</cell>
<cell>
<name>D6</name>
<contents>345</contents>
</cell>
<cell>
<name>D2</name>
<contents>=d6</contents>
</cell>
</spreadsheet>
:
int main(int argc, char const *argv[])
{
boost::property_tree::ptree pt;
pt.put("spreadsheet.cell.name", "a2");
pt.put("spreadsheet.cell.contents", "adsf");
write_xml("output.xml", pt);
boost::property_tree::ptree ptr;
read_xml("output.xml", ptr);
ptr.put("spreadsheet.cell.name", "d6");
ptr.put("spreadsheet.cell.contents", "345");
ptr.put("spreadsheet.cell.name", "d2");
ptr.put("spreadsheet.cell.contents", "=d6");
write_xml("output2.xml", ptr);
return 0;
}
をこのquestionに基づいて、私はput
方法が代わる見ます新しいノードを追加する代わりに、そのノードにあるものまさに私が見ていた機能である:
のOutput.xml
<?xml version="1.0" encoding="utf-8"?>
<spreadsheet>
<cell>
<name>a2</name>
<contents>adsf</contents>
</cell>
</spreadsheet>
Output2.xml
<?xml version="1.0" encoding="utf-8"?>
<spreadsheet>
<cell>
<name>d2</name>
<contents>=d6</contents>
</cell>
</spreadsheet>
私はこのadd_child
メソッドを参照してくださいdocumentationを見ているだろうAdd the node at the given path. Create any missing parents. If there already is a node at the path, add another one with the same key.
私はその方法を使用する方法を考え出すことができません、誰かがそれを使用する方法を説明することができますか?
私が望むファイル形式を実現するためにこれについてもっと良い方法がありますか?
は、あなただけの子の名前でセル名を使用することができませんか?つまり、「spreadsheet.cell.d6」「 –
@ k-ballo」はXMLの要件を満たしていないためです。 – Deekor