从XML文件中查找节点的行号

时间:2017-01-19 22:42:42

标签: c++

我发现从XML文件中找到行号非常棘手。使用VS 2015提供的标准XML库。我使用Microsoft库在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>

如您所见,节点中有节点。我想得到行号。

例如,获取节点documentType的行号。在上面的例子中,行号是11。 或者获取节点id的行号。

我没有任何特殊的XML库,只使用MSXML库。

以下是我到目前为止编写的代码。

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

缺少的是一个大循环,它将遍历所有节点,子节点并转到我正在寻找的ElementName。我保留一个LineNumber int,它会增加,直到我找到它。

这个大循环事实上对我来说实在是让人困惑。希望有人能指导我。

0 个答案:

没有答案