将包含额外元素的数据集写入 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();
}
您好,我正在使用 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();
}