我发现从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,它会增加,直到我找到它。
这个大循环事实上对我来说实在是让人困惑。希望有人能指导我。