我对C#编程非常陌生,这是我的第一个问题。 我想读取名为ID的窗口属性,然后解析成int。如何使用XmlReader以int形式获取属性值?
这里是我的XML文档:
<window ID="0">
<parentID>0</parentID>
<windowType>0</windowType>
<windowName>firstWindow</windowName>
<windowText>My first window</windowText>
<windowOptions>Option 1; Option 2;</windowOptions>
<windowActions>Action 1; Action 2;</windowActions>
<windowExit>Exit Action;</windowExit>
</window>
这里是我的C#代码,就应该读从XML文件中的信息,然后把它解析为一个二维数组。
string[][] windowResults;
using (XmlReader reader = XmlReader.Create("GUI.xml"))
{
int windowCount = 0;
int nodeCount = 0;
int windowID = 0;
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element &&
reader.Name == "window")
{
nodeCount++;
}
}
windowResults = new string[nodeCount][];
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
if (reader.Name == "window")
{
while (reader.MoveToNextAttribute())
{
int.TryParse(reader.Value, out windowID);
}
}
break;
case XmlNodeType.Text:
switch (reader.Value)
{
case "parentID":
windowResults[windowID][1] = reader.Value;
break;
case "windowType":
windowResults[windowID][2] = reader.Value;
break;
case "windowText":
windowResults[windowID][3] = reader.Value;
break;
case "windowOptions":
windowResults[windowID][4] = reader.Value;
break;
case "windowActions":
windowResults[windowID][5] = reader.Value;
break;
case "windowExit":
windowResults[windowID][6] = reader.Value;
break;
}
break;
case XmlNodeType.EndElement:
switch (reader.Name)
{
case "window":
windowCount++;
break;
}
break;
}
}
}
目前,它给了我下面的错误:
'int' is a 'type' but is used like a 'variable'
您发布的代码不会生产e编译器错误。请确认错误的来源。 – vcsjones
它指向包含while的行(reader.MoveToNextAttribute()) – DaMaGeX