我有一个这样的xml结构:
Header
\-Timeseries (1-N)
\- Period (1-N)
\- Interval (1-N)
这是一个大概的例子:
<Header>
<Element />
<Timeseries>
<Element />
<Period>
<Element />
<Interval>
<Element />
</Interval>
</Period>
</Timeseries>
</Header>
我希望阅读标题元素,直到我点击 Timeseries,然后是 Timeseries 元素,直到我点击 Period,然后是 Period,直到我点击 Interval,和 Interval,直到我到达 Interval 的末尾。当我完成一个句号时,我正在写所有的间隔。
这个特定的文档有 614 个时间序列,每个时间序列有 1 个周期。
我正在解析它:
while (!xmlReader.EOF)
{
if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "Header")
{
while (xmlReader.Name != "Timeseries" && xmlReader.Read())
{
// read
}
}
else if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "Timeseries")
{
while (xmlReader.Name != "Period" && xmlReader.Read())
{
// read
}
}
else if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "Period")
{
while (xmlReader.Name != "Interval" && xmlReader.Read())
{
// read
}
}
else if (xmlReader.NodeType == XmlNodeType.Element && xmlReader.Name == "Interval")
{
while (xmlReader.NodeType != XmlNodeType.EndElement && xmlReader.Read())
{
// read
}
}
else if (xmlReader.NodeType == XmlNodeType.EndElement && xmlReader.Name == "Period")
{
// write intervals
}
else
{
xmlReader.Read();
}
}
似乎只读取了 166/614 个句点。因此,我必须吞噬一些 xml,但无法发现错误。
转储读取表明时间序列 1-166 已正确解析,但不知何故解析在那之后停止。