3

以下のように、comboBox19 に従って読み取る 2 つのファイルから選択したい:

           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.CreateComboBox.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

{}スコープを 1 行だけに制限したい場合、if ステートメントに if を含めることは必須ではありません。ただし、変数宣言を次の行だけにすることはできません。これは、条件が false の場合、変数が作成されないためです。

そのため、条件の前に 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 に答える