我正在使用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>
對於一個簡單的測試程序中,我寫道:在此基礎上question我看到put
方法取代
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;
}
該節點上的任何內容,而不是添加新節點。這也正是我所看到的功能:
的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>
望着documentation我看到這個add_child
方法,它將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.
我不太明白如何使用add_child
方法,有人可以解釋如何使用它嗎?
有沒有更好的方法去實現我想要的文件格式呢?
你就不能在孩子的名字使用單元格的名字嗎?即''spreadsheet.cell.d6「' – 2013-04-21 22:55:44
@ k-ballo,因爲那不符合xml要求。 – Deekor 2013-04-21 23:03:04