2016-06-17 8 views
0

: - 私が間違っている可能性のあるアドバイスすべてのノードを反復処理する方法は?私は次のような出力を生成しようとしています

<article> <status> </status> ....</article> 
<article> <status> </status> ....</article> 

私は、ループロジックと少しの援助を必要としています。私は "for"ループを使ってみましたが、目的の出力を生成できませんでした。お知らせ下さい。ありがとうございました。

public static string createArticleALL() 
    { 

     XElement xeRoot = new XElement("article"); 
     XDocument xDoc = new XDocument(xeRoot); 

     using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["###"].ConnectionString)) 

     { 
      con.Open(); 

      using (SqlCommand command = new SqlCommand("####", con)) 
      { 

       SqlDataReader reader = command.ExecuteReader(); 
       while (reader.Read()) 
       { 
        string title = reader.GetString(0); 
        string body = reader.GetString(4); 

        string pub = reader["publication_id"].ToString(); 
        string iss = reader["issue_id"].ToString(); 
        string sid = reader["STORYID"].ToString(); 


        string c = url(title, pub, iss, sid); 

     DateTime dt = DateTime.Today; 

     foreach (XElement element in xDoc.Descendants("article")) 
     { 

     XElement xeStatus = new XElement("status", "Approved"); 
     xeRoot.Add(xeStatus); 

     XElement xeTitle = new XElement("title", title); 
     xeRoot.Add(xeTitle); 

     XElement xeSubTitle = new XElement("subtitle", title); 
     xeRoot.Add(xeSubTitle); 

     XElement xeSynopsis = new XElement("synopsis", body + "..."); 
     xeRoot.Add(xeSynopsis); 

     XElement xeURL = new XElement("url", c); 
     xeRoot.Add(xeURL); 

     XElement xeDisplayDate = new XElement("display_date", dt); 
     xeRoot.Add(xeDisplayDate); 


     } 


       } 
      } 


     return xDoc.ToString(); 
     } 
     return null; 

    } 
+0

1)あなたのコードは現在どのような出力を生成していますか? 2)必要な出力が有効なXMLではありません。有効なXMLには、[ルート要素](https://en.wikipedia.org/wiki/Root_element)が1つ必要です。無効なXMLを生成するために 'XDocument'を使うことはできません。 – dbc

答えて

0

これをクリーンアップしました。 articleノードを作成し、それを各whileループのドキュメントに追加する必要があります。他の場所でタイトルのものを使用していないとすれば、余分なビットを削除しました。

XDocument xDoc = new XDocument(new XElement("Root")); 
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["###"].ConnectionString)) 
{ 
    con.Open(); 

    using (SqlCommand command = new SqlCommand("####", con)) 
    { 
     XElement article; 
     SqlDataReader reader = command.ExecuteReader(); 
     while (reader.Read()) 
     { 
      xDoc.Add(article = new XElement("article")); 
      article.Add(new XElement("status", "Approved")); 
      string title; 
      article.Add(new XElement("title", title = reader.GetString(0))); 
      article.Add(new XElement("subtitle", title)); 
      article.Add(new XElement("synopsis", reader.GetString(4) + "...")); 

      string pub = reader["publication_id"].ToString(); 
      string iss = reader["issue_id"].ToString(); 
      string sid = reader["STORYID"].ToString(); 

      string c = url(title, pub, iss, sid); 
      article.Add(new XElement("url", c)); 

      article.Add(new XElement("display_date", DateTime.Today)); 
     } 
    } 
} 
関連する問題