C++ 从XML文件中查找节点的行号
我发现从XML文件中查找行号很棘手。使用VS 2015提供的标准XML库。我用微软库编写C++代码。 我有一个如下所示的XML文件:C++ 从XML文件中查找节点的行号,c++,C++,我发现从XML文件中查找行号很棘手。使用VS 2015提供的标准XML库。我用微软库编写C++代码。 我有一个如下所示的XML文件: <document> <schemaVersion>1.0.1</schemaVersion> <ID-1> <name>Sample SCX</name> </ID-1> <ID-2> <date>
<document>
<schemaVersion>1.0.1</schemaVersion>
<ID-1>
<name>Sample SCX</name>
</ID-1>
<ID-2>
<date>2009-03-17</date>
<ID-2-1>
<mediaType>myCable</mediaType>
</ID-2-1>
<documentType>myOrder</documentType>
</ID-2>
<ID-3>
<documentCode>1</documentCode>
<ID-3-1>
<name>kool</name>
<ID-3-2>
<id>555</id>
</ID-3-2>
</ID-3-1>
<ID-3>
</document>
我缺少的是一个大循环,它将遍历所有节点、子节点并转到我要查找的ElementName
。我保留一个LineNumber
int,它将递增,直到找到它为止
这个大循环对我来说真的很混乱。希望有人能指导我。如果在节点之间放置一个或两个回车符,或者将多个节点放在同一行上,这种方法会中断。我建议在解析XML内容时使用一个记录行(和列)位置的库,而不是像这样尝试一些黑客操作。为什么需要行号?我需要显示行号作为显示错误消息的一部分。我知道这是一个黑客,但请帮助如果你能。或者有人建议我可以用C++来获取行号吗?我需要一些简单的,可以轻松集成,也许可证免费。
for (CElementEX::ElementsT::iterator child = Element.m_Children.begin(); child != Element.m_Children.end(); ++child)
{
LineNumber++;
if (child->m_Name == ElementName) // here i pass string to find
return &(*child);
while (i < child->m_Children.size())
{
for (i = 0; i < child->m_Children.size(); i++)
{
CElementEX elem = child->m_Children.at(i);
LineNumber++;
}
}
}