2012-03-11 3 views
0

私はXMLファイルを読み込んですべてをコンソールに出力するコンソールアプリケーションを持っています。 このアプリケーションを変換して、.aspxページのデータを出力する必要があります。コンソールアプリケーションをASP.NETのWebサイトに変換するC#

これはコード

// Declare XmlTextReader. 
     XmlTextReader r = new XmlTextReader("../../persons.xml"); 

     while (r.Read()) 
     { 
      switch (r.NodeType) 
      { 
       case XmlNodeType.Element: 
        if (r.Name == "Persons") 
        { 
         Console.WriteLine("<table>"); 
         Console.WriteLine(" <tr> <th>Name</th> <th>Gender</th> <th>Age</th> </tr>"); 
        } 
        else if (r.Name == "Person") 
        { 
         Console.Write(" <tr> "); 
        } 
        else if (r.Name == "Name" || 
          r.Name == "Gender" || r.Name == "Age") 
        { 
         Console.Write("<td>"); 
        } 
        break; 

       case XmlNodeType.Text: 
        Console.Write(r.Value); 
        break; 

       case XmlNodeType.EndElement: 
        if (r.Name == "Persons") 
        { 
         Console.WriteLine("</table>\n"); 
        } 
        else if (r.Name == "Person") 
        { 
         Console.Write("</tr>\n"); 
        } 
        else if (r.Name == "Name" || 
          r.Name == "Gender" || r.Name == "Age") 
        { 
         Console.Write(">/td> "); 
        } 
        break; 
      } 
     } 

である私は、ASP.NETを使用してXMLを読み取る方法の例がたくさん見つかりましたが、残念ながら、私はこれにハードな方法を必要としています。

+0

コンソールを最も簡単な方法で応答に変更できます。 – Joe

+0

私はこれを初めて知ったので、あなたがもっと説明できるならそれは本当に助けになるでしょう。コンソールをレスポンスに変更した後はどうすればよいですか? – Geo

+0

あなたはウェブアプリで読んで少し時間を費やす必要があります。 –

答えて

2

あなたはこのようなあなたの.aspxページにリテラルコントロールを追加する必要があります。その後

<asp:Literal ID="Literal1" runat="server" /> 

そうのようなコードを変更します。

// Declare XmlTextReader. 
XmlTextReader r = new XmlTextReader("../../persons.xml"); 

//Add this stringBuilder 
StringBuilder sb = new StringBuilder(); 

while (r.Read()) 
{ 
    switch (r.NodeType) 
    { 
     case XmlNodeType.Element: 
      if (r.Name == "Persons") 
      { 
       sb.Append("<table>"); 
       sb.Append(" <tr> <th>Name</th> <th>Gender</th> <th>Age</th> </tr>"); 
      } 
      else if (r.Name == "Person") 
      { 
       sb.Append(" <tr> "); 
      } 
      else if (r.Name == "Name" || 
        r.Name == "Gender" || r.Name == "Age") 
      { 
       sb.Append("<td>"); 
      } 
      break; 
     case XmlNodeType.Text: 
      sb.Append(r.Value); 
      break; 
     case XmlNodeType.EndElement: 
      if (r.Name == "Persons") 
      { 
       sb.Append("</table>\n"); 
      } 
      else if (r.Name == "Person") 
      { 
       sb.Append("</tr>\n"); 
      } 
      else if (r.Name == "Name" || 
        r.Name == "Gender" || r.Name == "Age") 
      { 
       sb.Append(">/td> "); 
      } 
      break; 
    } 
} 

//Add the result value to a literal control on the aspx page 
Literal1.Text=sb.ToString(); 

歓迎

+0

これも私が考えていたものです。私はあなたに知らせようとします。ありがとう – Geo

+0

それは動作します!テーブルが正しく表示されていないため、元のコードにどこに問題があるのか​​把握するだけです。 – Geo

+0

最終的なsb.Appendのhtmlが無効である可能性があります。 >/td>をに変更します。 – hofnarwillie

2

あなたは、いくつかの選択肢

  1. オーバーライドコンソールのデフォルトの出力

    にStringWriterのSW =新にStringWriterを(検討することができます)。 Console.SetOut(sw);

すべての出力は、SW変数

  1. 使用XSLT(最良のオプション)に格納される
関連する問題