将包含额外元素的数据集写入 xml

Writing a Dataset to xml including extra element

您好,我正在使用 Datable 将 rss 转换为 xml。首先,我正在阅读 rss 并将其转换为 DataTable。数据表然后转换为 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 元素?

我不确定是否可以使用 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();
 }