2015-03-02 61 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

相关问题