使用TinyXml将XML写入txt文件

时间:2011-11-26 07:01:55

标签: c++ tinyxml

我有一个简单的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的全部内容,所以我知道文件正在加载。 任何帮助表示赞赏。我确定这只是知道函数调用的问题。

1 个答案:

答案 0 :(得分:0)

我会首先浏览他们的tutorial。它显示了一些基本的XML写作和阅读。

以上注释是正确的...您将加载XML文档(就像在代码示例中一样),然后遍历XML。

查看文档,因为您已经加载了XMLDocument,所以需要调用RootElement方法。这会返回element。从元素中,您可以提取有关当前节点的信息。要更进一步进入树中,您必须使用TiXmlNode::IterateChildren来遍历根元素子项。当您遍历树时,将返回TiXmlNode。然后,您可以使用Nodes方法获取不同的类类型,然后提取不同的信息。