我有一个简单的XML文件但很大。我们说
<products>
<product_id>98667</product_id>
<name>Hiking Boots</name>
<price>34.99</price>
<product_id>10123</product_id>
<name>Work Gloves</name>
<price>12.99</price>
<product_id>15773</product_id>
<name>Belt</name>
<price>14.99</price>
</products>
我想将整个文件的数据(比如500个条目)写入制表符分隔的文本文件中。为了更好地理解这个过程,我们只想写出产品名称和产品价格。我无法看到典型的TinyXml教程覆盖此类写入的位置。
我的代码:
void MyProducts::writeProducts(const char *pFilename) {
TiXmlDocument doc(pFilename);
bool loadOkay = doc.LoadFile();
if (loadOkay) {
cout<<"The file loaded"<<endl;
cout<<pFilename<<endl;
cout<<doc<<endl;
}
else {
cout<<"Failed to load file \"%s\"\n"<< pFilename<<endl;
}
} // end function
我不确定我是否要像普通文件一样逐行解析,或者如果这对api有任何好处。我可以打印doc的全部内容,所以我知道文件正在加载。 任何帮助表示赞赏。我确定这只是知道函数调用的问题。
答案 0 :(得分:0)
我会首先浏览他们的tutorial。它显示了一些基本的XML写作和阅读。
以上注释是正确的...您将加载XML文档(就像在代码示例中一样),然后遍历XML。
查看文档,因为您已经加载了XMLDocument,所以需要调用RootElement方法。这会返回element。从元素中,您可以提取有关当前节点的信息。要更进一步进入树中,您必须使用TiXmlNode::IterateChildren来遍历根元素子项。当您遍历树时,将返回TiXmlNode。然后,您可以使用Nodes方法获取不同的类类型,然后提取不同的信息。