3

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

4

1 回答 1

0

我会先阅读他们的教程。它显示了一些基本的 XML 写入和读取。

上面的评论是正确的......您将加载 XML 文档(就像您在代码示例中所做的那样),然后遍历 XML。

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

于 2011-12-02T12:47:16.260 回答