3

我想根据comboBox19从两个文件中进行选择,如下所示:

           if (comboBox19.Text == "01")  XmlReader reader = new XmlReader ("C:\\Ticket Format ID01.xml");
           else if (comboBox19.Text == "02" ) XmlReader reader = new XmlReader("C:\\Ticket Format ID02.xml");
            while (reader.Read())
            {
                if (reader.IsStartElement())
                {
                    switch (reader.Name)
                    {
                       case:// case coding here
                     }
                }
           }

但是我编译的时候有错误。错误消息是“嵌入式语句不能是声明或标记语句”。各位大佬怎么解决?

4

5 回答 5

7
XmlTextReader reader = null; 

if (comboBox19.Text == "01")   
    reader = new XmlTextReader ("C:\\Ticket Format ID01.xml");
else if (comboBox19.Text == "02" ) 
    reader = new XmlTextReader ("C:\\Ticket Format ID02.xml");

或者,如果您的文件都遵循相同的约定;

var fileName = String.Format("C:\\Ticket Format ID{0}.xml", comboBox19.Text);
var reader = new XmlTextReader (fileName);
于 2012-08-27T04:11:39.547 回答
5

您必须在使用之前声明阅读器引用变量,或者只需将此代码包装在花括号{}(块)周围。

XmlReader reader=null;

if(comboBox19.Text == "01")
 reader =XmlReader.Create(@"C:\Ticket Format ID01.xml");
else 
if(comboBox19.Text == "02" ) 
 reader =XmlReader.Create(@"C:\Ticket Format ID02.xml");

或者

  string fileName=string.Empty;

  if(comboBox19.Text == "01")
      fileName=@"C:\Ticket Format ID01.xml";
  else 
  if(comboBox19.Text == "02" ) 
      fileName=@"C:\Ticket Format ID02.xml";

  XmlReader reader=null;
  if(!string.IsEmptyOrNull(fileName))
    {
       reader=XmlReader.Create(fileName);
    }  

或者

 using(XmlReader reader=XmlReader.Create(fileName)) 
 {
  ///
 }    
于 2012-08-27T04:13:34.703 回答
3

您需要将 XmlReader 的声明移到 if 语句之外,并且由于 XmlReader 是一个抽象类,您不能直接从它创建实例。使用XmlTextReader或静态方法XmlReader.Create。您还应该进行比较,ComboBox.SelectedValue而不是ComboBox.Text

XmlReader reader;
if (comboBox19.SelectedValue == "01")  
  reader = new XmlReader.Create("C:\\Ticket Format ID01.xml");
else if (comboBox19.SelectedValue == "02" )
  reader = new XmlReader.Create("C:\\Ticket Format ID02.xml");
于 2012-08-27T04:11:44.523 回答
2
XmlReader reader = null;
if (textBox1.Text == "01")  reader = new XmlTextReader ("C:\\Ticket Format ID01.xml");
else if (textBox1.Text == "02") reader = new XmlTextReader("C:\\Ticket Format ID02.xml");

XMLReader是一个抽象类,因此您无法创建它的实例。

于 2012-08-27T04:16:28.307 回答
1

{}如果我们想将其范围限制在一行,则 if 语句不是强制性的。但是,我们不能将变量声明作为其后面的唯一行。这是因为如果条件结果为假,则永远不会创建变量。

所以,在条件之前声明 XMLReader。或将您的条件代码包装在{}

  XmlReader reader = null;
if (textBox1.Text == "01")
  reader = new XmlTextReader ("C:\\Ticket Format ID01.xml");
else if (textBox1.Text == "02")
 reader = new XmlTextReader("C:\\Ticket Format ID02.xml");

有关详细信息,请参阅此链接

于 2012-08-27T04:17:41.723 回答