我试图在不使用任何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内容。有什么想法吗?
答案 0 :(得分:1)
我建议你遵循XML规范定义的语法和语法:
您还应该投资调试器,或者如果您的IDE支持断点和单步执行,请使用它。
我不明白你的for
循环试图完成什么
如果要解析语言,请正确执行。查找“如何解析”或“词法分析”。
std::string
的以下方法可能有用:
find
substr
find_first_not_of (good for skipping whitespace)