UPDここで「フォーマット」の問題に対する回答を見つけたので、質問のこの部分を削除します。更新された質問を読んでください:
C ++のファイルシステムにxmlを書き込む必要があります。私はこの格言を学びました。チュートリアルでは、非常に単純な xml が使用されています。私の xml はより複雑で、コードを変更して生成する方法がわかりません。それが私がコードしたものです:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
//<Root>
// <Set Name="1">
// <Field Name="Hello 1"/>
// <Field Name="World 1"/>
// </Set>
// <Set Name="2">
// <Field Name="Hello 2"/>
// <Field Name="World 2"/>
// </Set>
//</Root>
int main(int argc, char* argv[])
{
using boost::property_tree::ptree;
ptree pt;
pt.put("Root.Set.Field", "Hello");
pt.put("Root.Set.Field", "World");
boost::property_tree::xml_writer_settings<char> settings('\t', 1);
write_xml("testXml.xml", pt, std::locale(), settings);
return 0;
}
出力は次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Set>
<Field>World</Field>
</Set>
</Root>
特に、目的のxmlを生成するようにプログラムを変更するにはどうすればよいですか:
- 同じ名前のノードを複数追加するには?
true
そのように追加するpt.put("Root.Set.Field", "Hello", true);
とコンパイル時エラーになります - xml 属性を設定するには? (
Name="Hello 1"
) ドキュメントによると、それらを「サブキー」に追加する必要があるようですが、どうすればよいですか?
upd私はそれを試しました: それpt.put("Root.Set.Field.xmlattr.Name", "Hello 1");
を見ることを期待していますが<Field Name="Hello 1"/>
、それでもうまくいきません。正しい構文を共有できる人を待っています。
upd2 bingo、この構文は機能します。明日も目的の xml を印刷してみます。pt.put("Root.Set.Field.<xmlattr>.Name", "Hello 1");