【问题标题】:Create xml file with dataset like this format使用这种格式的数据集创建 xml 文件
【发布时间】:2018-02-22 09:13:44
【问题描述】:

使用这种格式的数据集创建 xml 文件-

-<_XPXML Note="" CrtTime="" CN="" DBN="" Srv="" Ver="" AppId="" Class="" IC="" Stock="" Desc="">

<_InvTrans IC="010006" Stock="1" Desc="2 " OppKind="1" Amount="744" Batch="6" Mat="108208"/>
<_InvTrans IC="010006" Stock="1" Desc="2 " OppKind="1" Amount="744" Batch="6" Mat="108208"/>
<_InvTrans IC="010006" Stock="1" Desc="2 " OppKind="1" Amount="744" Batch="6" Mat="108208"/>

</_XPXML>

【问题讨论】:

  • 欢迎来到 SO。还请说明您已经尝试过什么?如果您还没有尝试过任何事情,请先开始,然后在遇到困难时提出问题。请提供一些代码。请努力使问题易于理解,并花点时间阅读how-to-ask on SO

标签: c# xml


【解决方案1】:

如果你想创建一些可以使用 XElement 的自定义 xml。

如何创建&lt;_XPXML Note="" CrtTime="" CN="" DBN="" Srv="" Ver="" AppId="" Class="" IC="" Stock="" Desc=""&gt;

您可以使用下面的代码来创建。

var node=new XElement("_XPXML ");
node.SetAttributeValue("Note","");
node.SetAttributeValue("CrtTime","");
// ...
// please write the Attribute
doc.Root.Add(node);

在你使用代码之前,你应该新建一个文档作为这个代码

XDocument doc = new XDocument();

你应该在文件顶部添加using System.Xml.Linq

设置好属性后可以保存到文件中。

doc.Save(xx);

例子:

XDocument doc = new XDocument();
XElement node = new XElement("_XPXML");
node.SetAttributeValue("Note", "");
var invTrans = new XElement("_InvTrans");
node.Add(invTrans);
invTrans.SetAttributeValue("IC", "010006");

doc.Add(node);

StringBuilder str = new StringBuilder();
TextWriter stream = new StringWriter(str);
doc.Save(stream);

str

<?xml version="1.0" encoding="utf-16"?>
<_XPXML Note="">
  <_InvTrans IC="010006" />
</_XPXML>

【讨论】:

  • tnx lindexi .after 那我怎么能添加像这种格式的元素。
  • 如您所见,该节点是_XPXML ,您可以运行代码查看它的输出。
  • @lindexi 您不应该回答低质量问题的原因之一是您最终可能会收到 help vampire 并鼓励该人将来提出更多此类问题(因为他们上次得到了他们需要的东西)。
  • @ManfredRadlwimmer 好的,因为我编辑了他的问题,我想我可以回答这个问题。
  • @lindexi 尝试帮助人们并没有错——这就是 SO 的目的。我只是想警告你,你可能会用这个来浪费你的。
【解决方案2】:

尝试使用 xml linq 进行以下操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication23
{
    class Program
    {
        static void Main(string[] args)
        {
            DataTable dt = new DataTable("_InvTrans");
            dt.Columns.Add("IC", typeof(string));
            dt.Columns.Add("Stock", typeof(string));
            dt.Columns.Add("Desc", typeof(string));
            dt.Columns.Add("OppKind", typeof(string));
            dt.Columns.Add("Amount", typeof(string));
            dt.Columns.Add("Batch", typeof(string));
            dt.Columns.Add("Mat", typeof(string));

            dt.Rows.Add(new object[] { "010006", "1", "2 ", "1", "744", "6", "108208" });
            dt.Rows.Add(new object[] { "010006", "1", "2 ", "1", "744", "6", "108208" });
            dt.Rows.Add(new object[] { "010006", "1", "2 ", "1", "744", "6", "108208" });
            GetXmlTable(dt);

        }
        static XElement GetXmlTable(DataTable dt)
        {
            string tableName = dt.TableName;
            XElement table = new XElement(tableName);

            string[] columnNames = dt.Columns.Cast<DataColumn>().Select(x => x.ColumnName).ToArray();
            foreach (DataRow row in dt.AsEnumerable())
            {
                XElement xRow = new XElement("_InvTrans");
                table.Add(xRow);
                foreach (string columnName in columnNames)
                {
                    xRow.Add(new XAttribute(columnName, row[columnName]));
                }
            }

            return table;

        }

    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多