用c ++读取XML文件

时间:2014-04-25 19:36:04

标签: c++ xml

我试图在不使用任何c ++库的情况下用c ++读取xml文件。我从另一篇文章中获取了代码并试图理解并实现它。到目前为止,我有这个......

{
    string line;
    ifstream in("Team.xml");

    bool startOfTag;
    startOfTag = false;

    while (getline(in,line))
    {
        std::string temp; 
        for (int i = 0; i < line.length(); i++)
        {
            if (line[i] == ' ' && temp.size() == 0)
            {
            }
            else
            {
                temp += line[i];
            }
        }

        cout << "-->" << temp << "<--" << endl;

        if (temp == "<Fname>")
        {
            cout << "Found <Fname>" << endl;
            startOfTag = true;
            continue;
        }
        else if (temp == "</Fname>")
        {
            startOfTag = false;
            cout << "Found </Fname>" << endl;
        }

        if (startOfTag)
        {
            cout << temp << endl;
        }
    }
}

然后,我的xml文件看起来像这样。

<?xml version="1.0" ?>

<Team>
    <Player>
        <Fname>David</Fname>
        <Lname>James</Lname>
    </Player>
</Team>

此时此刻,我只想阅读<Fname>内的值,即大卫,但在运行程序时,这是我的整个xml内容。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我建议你遵循XML规范定义的语法和语法:

XML Spec.

您还应该投资调试器,或者如果您的IDE支持断点和单步执行,请使用它。

我不明白你的for循环试图完成什么 如果要解析语言,请正确执行。查找“如何解析”或“词法分析”。

std::string的以下方法可能有用:

find
substr
find_first_not_of (good for skipping whitespace)