[英]XmlReader IsStartElement in a while loop is repeating the previous line
我有一个结构如下的XML:
<?xml version="1.0" encoding="utf-8"?>
<Report blah blah blah>
<KeywordPerformanceReportColumns>
<Column name="GregorianDate" />
<Column name="AccountId" />
<Column name="AccountNumber" />
<Column name="AccountName" />
<Column name="CampaignId" />
<Column name="CampaignName" />
etc....
从这篇SO文章中 ,我学习了使用IsStartElement
子KeywordPerformanceReportColumns
。 我得到的行为是它循环回到第一个Column
,而从未进行到下一个子级。
码
//use xmlreader to read the memorystream
using (XmlReader reader = XmlReader.Create(memStream))
{
while (reader.Read())
{
reader.ReadStartElement("Report");
//schema information
reader.ReadStartElement("KeywordPerformanceReportColumns");
//columns
while (reader.IsStartElement("Column"))
{
//note interested in whitespace nodes
bool isWhiteSpace = reader.NodeType == XmlNodeType.Whitespace;
if (!isWhiteSpace)
{
string columnName = reader.GetAttribute("name");
Console.WriteLine(columnName);
}
}
reader.ReadEndElement( /* "KeywordPerformanceReportColumns" */ );
reader.ReadEndElement( /* "Report" */ );
}
}
屏幕截图
您永远不会前进到while循环内的下一个节点,因此
while (reader.IsStartElement("Column"))
如果输入,它将永远不会完成。 您可能想要类似的东西:
while (reader.Read() && reader.IsStartElement("Column"))
在示例中,您已链接到 此处 , 此处使用ReadToNextSibling方法
while (reader.ReadToNextSibling("SubEmptyElement"))
while (reader.IsStartElement("Column"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.