0

我的问题是商店名称应该是公司名称的子元素,但发生的情况是它们是相同的我该如何解决这个问题?

这是示例输出:

    <?xml version="1.0" encoding="utf-8"?>
<Records>
  <CompanyName>Company 1</CompanyName>
  <StoreName>Store 2</StoreName>
  <StoreName>Store 3</StoreName>
  <StoreName>Store 5</StoreName>
  <CompanyName>Company 2</CompanyName>
  <StoreName>Store 1</StoreName>
  <StoreName>Store 4</StoreName>
</Records>

这是我的代码:

qlCommand cmd = new SqlCommand("select company_name, company_id from company", cn);
            //SqlCommand cmd = new SqlCommand("SELECT dbo.company.company_name, dbo.store.store_name, dbo.store.company_id FROM dbo.company INNER JOIN dbo.store ON dbo.company.company_id = dbo.store.company_id", cn);
            SqlDataAdapter adapter = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            adapter.Fill(dt);

            SqlCommand cmd2 = new SqlCommand("select store_name, company_id from store", cn);
            SqlDataAdapter adapter2 = new SqlDataAdapter(cmd2);
            DataTable dt2 = new DataTable();
            adapter2.Fill(dt2);

            dataGridView1.DataSource = dt;

            XElement xml = new XElement("Records");
            foreach (DataRow row in dt.Rows)
            {
                xml.Add(new XElement("CompanyName", row["company_name"].ToString()));
                foreach (DataRow row1 in dt2.Rows)
                {
                    if(row["company_id"].ToString() == row1["company_id"].ToString())
                    {
                        xml.Add(new XElement("StoreName", row1["store_name"].ToString()));
                    }
                }
            }

            xml.Save("C:\\Users\\PHWS13\\Desktop\\test.xml");
4

1 回答 1

1

问题是您添加的元素xml始终处于同一级别(即您始终将元素添加为“记录”元素的子元素)。

试试这个:

XElement xml = new XElement("Records");
foreach (DataRow row in dt.Rows)
{
    var companyName = new XElement("CompanyName", row["company_name"].ToString())
    xml.Add(companyName);
    foreach (DataRow row1 in dt2.Rows)
    {
        if(row["company_id"].ToString() == row1["company_id"].ToString())
        {
            companyName.Add(new XElement("StoreName", row1["store_name"].ToString()));
        }
    }
}
于 2012-12-17T06:34:31.147 回答