简体   繁体   English

在C#中生成特定的xml语法

[英]Generate a specific xml syntax in C#

I generate a xml file using some database informations that get displayed in a dataGridView but I don't know how to get the xml syntax I want. 我使用在dataGridView中显示的一些数据库信息生成xml文件,但我不知道如何获取所需的xml语法。

What I have is like : 我所拥有的就像:

<Orders>
  <NewOrders>
    <Order>
      <OrderNbr>xxxxxxx</OrderNbr>
      <Amount>xxx</Amount>
    </Order>
  </NewOrders>
</Orders>
<Orders>
  <NewOrders>
    <Order>
      <OrderNbr>yyyyyy</OrderNbr>
      <Amount>yyy</Amount>
    </Order>
  </NewOrders>
</Orders>

And I'd want : 我想要:

<Orders>
  <NewOrders>
    <Order>
      <OrderNbr>xxxxxxx</OrderNbr>
      <Amount>xxx</Amount>
    </Order>
    <Order>
      <OrderNbr>yyyyyy</OrderNbr>
      <Amount>yyy</Amount>
    </Order>
  </NewOrders>
</Orders>

I generate the xml file like so : 我像这样生成xml文件:

private void buttonXML_Click(object sender, EventArgs e)
{
    if (dataGridView1.Rows.Count > 0)
    {
        if (!(File.Exists(path)))
        {
            TextWriter tw = new StreamWriter(path);
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                tw.WriteLine(
                new XElement("Orders",
                    new XElement("NewOrders",
                        new XElement("Order",
                            new XElement("OrderNbr", dataGridView1.Rows[i].Cells[3].Value),
                            new XElement("Amount", Convert.ToInt32(dataGridView1.Rows[i].Cells[5].Value)),
                            )
                        )
                    )
               );
            }
            tw.Close();
        }
    }
}    

I tried using a StringBuilder but didn't manage to achieve what I want. 我尝试使用StringBuilder,但没有实现我想要的。

I think that this will do what you're looking for: 我认为这将满足您的需求:

var xElement = new XElement("Orders",
new XElement("NewOrders")
);

for (int i = 0; i < 2; i++)
{
    xElement
    .Elements()
    .FirstOrDefault(e => e.Name == "NewOrders")
    .Add(
        new XElement("Order",
            new XElement("OrderNumber", "ABC"),
            new XElement("Amount", 5.55)
        )
    );
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM