Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从XML文件中查找节点的行号_C++ - Fatal编程技术网

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>

我发现从XML文件中查找行号很棘手。使用VS 2015提供的标准XML库。我用微软库编写C++代码。 我有一个如下所示的XML文件:

 <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++;
        }
    }
}