我试图使用此代码解析文件.我无法做到.任何帮助都会很棒我试图从文本框中传递文件名,它只是做得很好,但解析存在于循环中.
public void ParseXML(String FileName)
{
XmlTextReader reader = new XmlTextReader(FileName);
XmlNodeType type;
while (reader.Read())
{
type = reader.NodeType;
if (type == XmlNodeType.Element)
{
if (reader.Name == "PIChart")
{
if (reader.Name == "NumberofSectors")
{
m_SectorValue = Convert.ToInt32(reader.Value);
Sectors = m_SectorValue;
}
if (reader.Name == "AngleofSector")
{
if (reader.Name == "StartAngle")
{
m_StartValue = Convert.ToInt32(reader.Value);
StartValue.Enqueue(m_StartValue);
}
if (reader.Name == "EndAngle")
{
m_EndAngle = Convert.ToInt32(reader.Value);
EndAngle.Enqueue(m_EndAngle);
}
}
if (reader.Name == "ColorofSectorRegion")
{
if (reader.Name == "Region")
{
m_Region = Convert.ToInt32(reader.Value);
Region.Enqueue(m_Region);
}
if (reader.Name == "Color")
{
m_Color = reader.Value;
color.Enqueue(m_Color);
}
}
}
}
}
reader.Close();
}
Run Code Online (Sandbox Code Playgroud)
我试图解析的文件
<PIChart>
<NumberofSectors>5</NumberofSectors>
<AngleofSector>
<StartAngle>0</StartAngle>
<EndAngle>72</EndAngle>
<StartAngle>72</StartAngle>
<EndAngle>144</EndAngle>
</AngleofSector>
<ColorofSectorRegion>
<Region>0</Region>
<Color>Green</Color>
</ColorofSectorRegion>
</PIChart>
Run Code Online (Sandbox Code Playgroud)
你的部分问题是:
if (reader.Name == "PIChart")
{
if (reader.Name == "NumberofSectors")
{
m_SectorValue = Convert.ToInt32(reader.Value);
Sectors = m_SectorValue;
}
if (reader.Name == "AngleofSector")
{
// etc.
Run Code Online (Sandbox Code Playgroud)
你的第一个条件期望reader.Name等于"PIChart".然后你检查它是否等于"NumberofSectors"或"AngleOfSector"等.这是永远不会起作用的,因为reader.Name不能同时保存两个单独的值.
您是否可能正在寻找名为"NumberOfSectors" 的属性?您需要查看GetAttribute方法.
如果您编辑问题并显示至少部分您正在尝试阅读的XML文件,这将有所帮助.
阅读它XmlDocument或使用序列化程序会更好.但是如果你真的想读这个,你需要使用XmlReader.ReadSubTree来解析那些单独的元素.就像是:
if (reader.Name == "PIChart")
{
ParsePIChart(reader.ReadSubTree());
}
Run Code Online (Sandbox Code Playgroud)
并且您的ParsePIChart方法将读取该子树并解析子元素.
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |