2017-04-10 33 views
-1

私はテキストファイルで読みたいxmlファイルを持っています。テキストとして出力する必要があります(コード自体ではありません)。今私が持っているもの:(xmlファイルを開くためのボタンで)。私は今すぐファイルを開いてテキストボックスに入れることができますが、書かれているように、コードとして表示され、私が見たい計算を表示しません。xmlファイルをc#wpfで読む

XmlDocument xmldoc = new XmlDocument(); 
     XmlNodeList xmlnode; 
     int i = 0; 
     string str = null; 
     OpenFileDialog openFileDialog = new OpenFileDialog(); 
     if (openFileDialog.ShowDialog() == true) 
      tbBerekeningen.Text = File.ReadAllText(openFileDialog.FileName); 
     xmldoc.Load(tbBerekeningen.Text); 
     xmlnode = xmldoc.GetElementsByTagName("Product"); 
     for (i = 0; i <= xmlnode.Count - 1; i++) 
     { 
      xmlnode[i].ChildNodes.Item(0).InnerText.Trim(); 
      str = xmlnode[i].ChildNodes.Item(0).InnerText.Trim() + " " + xmlnode[i].ChildNodes.Item(1).InnerText.Trim() + " " + xmlnode[i].ChildNodes.Item(2).InnerText.Trim(); 
      MessageBox.Show(str); 

xmlファイル他のXMLファイルのとおりです。

要素が

<Som> 
<Getal1>1</Getal1> 
    <Operator>+</Operator> 
<Getal2>34</Getal2> 
</Som> 
+0

xmldoc.GetElementsByTagName( "製品")。 XMLファイルにProductという名前の要素がありますか? (以前に投稿したxmlにはこの要素が含まれていませんでした) – Johan

+0

問題の内容をよりよく説明する必要があります。私たちはあなたが必要とする計算が何であるか分かりません。 – jdweng

+0

@Johan私は投稿を編集しました。はい、私はしていませんでした。しかし、私が "Som"を入れても、それはまだ全体のXMLコードを与えます – user6840583

答えて

0

あるコードを、次の試してみてください。

XmlDocument xmldoc = new XmlDocument(); 
     XmlNodeList xmlnode; 
     int i = 0; 
     string str = null; 
     string result = string.Empty; 
     List<int> Value1 = new List<int>(); 
     List<int> Value2 = new List<int>(); 
     List<string> Operator = new List<string>(); 
     OpenFileDialog openFileDialog = new OpenFileDialog(); 
     if (openFileDialog.ShowDialog() == true) 
     { 

      xmldoc.Load(openFileDialog.FileName); 
      xmlnode = xmldoc.GetElementsByTagName("Som"); 
      for (i = 0; i <= xmlnode.Count - 1; i++) 
      { 
       xmlnode[i].ChildNodes.Item(0).InnerText.Trim(); 
       str = str + xmlnode[i].ChildNodes.Item(0).InnerText.Trim() + " " + xmlnode[i].ChildNodes.Item(1).InnerText.Trim() + " " + xmlnode[i].ChildNodes.Item(2).InnerText.Trim() + System.Environment.NewLine; 
       Value1.Add(int.Parse(xmlnode[i].ChildNodes.Item(0).InnerText.Trim())); 
       Value2.Add(int.Parse(xmlnode[i].ChildNodes.Item(2).InnerText.Trim())); 
       Operator.Add(xmlnode[i].ChildNodes.Item(1).InnerText.Trim()); 
      } 
      tbBerekeningen.Text = str; 
     } 
     for (int j = 0; j < Value1.Count; j++) 
     { 
      if (Operator[j] == "+") 
      { 
       result = result + Value1[j] + Value2[j] + System.Environment.NewLine; 
      } 

      //add if else block or switch cases for all the operators. 
      //e.g if (Operator[j] == "-") 

     } 

     tbBerekeningen.Text = result; 

あなたがのためとして、メッセージボックスにすべての計算を見ることができますループが進行する。

+0

それは、ありがとう、しかし、 "tbCalculations"(メッセージボックスではない) )? – user6840583

+0

私のコードサンプルを編集しました。これで、 "tbCalculations"のすべての計算が表示されます。 –

+0

恐ろしい!ちょうど期待どおり!ちょっと余分:どうすれば数字を計算できますか? – user6840583