XML'i okumak ve yazmak için Boost'un özellik ağacını kullanıyorum. Hazırladığım bir elektronik tablo uygulamasını kullanarak, elektronik tablonun içeriğini xml olarak kaydetmek istiyorum.Özellik ağacına aynı anahtarla düğümler ekleme
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;
}
Ben put
yöntem değiştirir görmek bu question dayanarak: Yazdığım basit bir test programı için
<?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>
: Bu yüzden XML için aşağıdaki biçimi kullanmak için gerekli ediyorum bir okul atama olduğunu Yeni bir tane eklemek yerine, o düğümdeki herhangi bir şey. Tam olarak görüyorum işlevselliği:
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>
Bu add_child
yöntemine bakın documentation baktığımızda hangi edecek 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.
Bu add_child
yöntemini nasıl kullanacağımı anlayamıyorum, biri nasıl kullanılacağını açıklayabilir mi?
İstediğim dosya biçimini elde etmek için bunu yapmanın daha iyi bir yolu var mı?
sadece çocuk adına hücrenin adını kullanamaz mıyız? Yani "spreadsheet.cell.d6" ' –
@ k-ballo, çünkü xml gereksinimlerini karşılamıyordu. – Deekor