2015-03-02 63 views
0

嗨,我將rss轉換爲使用Datable的xml。首先,我正在閱讀rss並轉換成DataTable。 Datatable然後轉換成XML。寫一個數據集到xml包括額外的元素

 try 
     { 
      DataTable tbl = new DataTable(); 
      tbl.Columns.Add("id"); 
      tbl.Columns.Add("product_name"); 
      XmlDocument doc = new XmlDocument(); 
      XmlDocument xmlDoc = new XmlDocument(); 
      xmlDoc.Load(""); 
      XmlNodeList itemNodes = xmlDoc.SelectNodes("//rss/channel/item"); 
      foreach (XmlNode itemNode in itemNodes) 
      { 
       DataRow row = tbl.NewRow(); 
       XmlNode idNode = itemNode.SelectSingleNode("id"); 
       XmlNode product_nameNode = itemNode.SelectSingleNode("product_name"); 

       if (idNode != null && product_nameNode != null) 
       { 
        row[0] = idNode.InnerText; 
        row[1] = product_nameNode.InnerText; 


       } 
       tbl.Rows.Add(row); 
       // tbl.Rows.Add(row); 
      } 

      DataSet dataSet = new DataSet("Products"); 
      tbl.TableName = "Product"; 
      dataSet.Tables.Add(tbl); 
      // Save to disk 

      dataSet.WriteXml(""); 

      dataSet.Clear(); 
      tbl.Clear(); 
      dataSet.Tables.Remove(tbl); 


     } 
     catch (Exception ex) 
     { 
      // Console.WriteLine(ex.Message); 
      // Console.Read(); 

     } 

最終的XML就是這樣

<Products> 
    <Product> 
     <id>121385</id> 
     <product_name>ABC</product_name> 
    <Product> 
    <Product> 
     ... 
    <Product> 
    <Product> 
     ... 
    <Product> 
<Products> 

結果是好的,但我想多加一個節點,即TOTALCOUNT後只是

<totalcount>1000</totalcount> 

它應該是這樣的。

<Products> 
    <totalcount>1000</totalcount> 
    <Product> 
      ... 
    <Product> 
    <Product> 
      ... 
    <Product> 
<Products> 

如何添加totalcount元素?

+0

任何人都可以幫助我在這一個嗎? – user3754676 2015-03-02 05:52:36

回答

0

我不確定是否可以使用WriteXml方法添加Custom node。但是,您可以使用XMLWriter並根據需要手動編寫節點。

using (XmlWriter xmlWriter = XmlWriter.Create(@"\\yourfilePath.xml")) 
{ 
    xmlWriter.WriteStartElement("root"); 
    xmlWriter.WriteStartElement("Products"); 
    xmlWriter.WriteElementString("totalcount", dt.Rows.Count.ToString()); 
    foreach (DataRow dataRow in dt.Rows) 
    { 
     xmlWriter.WriteStartElement("Product"); 
     foreach (DataColumn dataColumn in dt.Columns) 
     { 
      xmlWriter.WriteElementString(dataColumn.ColumnName, dataRow[dataColumn].ToString()); 
     } 
     xmlWriter.WriteEndElement(); 
    } 
    xmlWriter.WriteEndElement(); 
    xmlWriter.WriteEndElement(); 
} 
+0

我收到一個錯誤令牌StartElement狀態EndRootElement將導致一個無效的XML文檔 – user3754676 2015-03-02 21:50:23

相關問題