如何将XML子节点添加到父节点c#

如何将XML子节点添加到父节点c#,c#,xml,visual-studio,xml-parsing,linq-to-xml,C#,Xml,Visual Studio,Xml Parsing,Linq To Xml,如何将XML子节点添加到父节点c# 我当前的xml文件如下所示: 45 亚历克斯 查利 33666998565 41301美国280号高速公路,Sylacauga AL 35150 纽约 30 2. 1. 89 安娜 玛丽 336465798465 马萨诸塞州雅芳市纪念大道30号,邮编:2322 洛杉矶 28 2. 1. 我在寻找什么: **//我想要包含所有表行的** 45 亚历克斯 查利 33666998565 41301美国280号高速公路,Sylacauga AL 35150 纽约

如何将XML子节点添加到父节点c#

我当前的xml文件如下所示:


45
亚历克斯
查利
33666998565
41301美国280号高速公路,Sylacauga AL 35150
纽约
30
2.
1.
89
安娜
玛丽
336465798465
马萨诸塞州雅芳市纪念大道30号,邮编:2322
洛杉矶
28
2.
1.
我在寻找什么:


**//我想要包含所有表行的**
45
亚历克斯
查利
33666998565
41301美国280号高速公路,Sylacauga AL 35150
纽约
30
2.
1.
****
这是我的代码:

字符串头=”;
XDocument doc=XDocument.Parse(标题);
XElement sheet1=文档根目录;
foreach(dt.AsEnumerable()中的数据行)
{
XElement rd=新XElement(“rd”,新对象[]{
新元素(“id”,第[“id”行]),
新元素(“名称”,行[“名称]),
新的XElement(“最后”,行[“最后]),
新XElement(“电话”,第[“电话”)行),
新元素(“refF”,新对象[]{
新XElement(“ADRESE”,第[“ADRESE”行]),
新XElement(“花旗”,第[“花旗”]行),
}),
新元素(“年龄”,第[“年龄”]行),
新元素(“mp”,新元素(“度”,行[“mp”)),
新元素(“dpa”,第[“dpa”]行)
});
图1.添加(rd);
}
文件保存(文件名);
}

代码将“sheet1”显示为根元素,其中包括“rd”,但实际上我希望它作为“表”中的子元素。我应该如何重新构建它?注意,我只能使用xDocument而不是xmlDocument

1-您可以将
标记添加到
标题
中,如下所示:

string header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Sheet1><table></table></Sheet1>";
结果

string header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Sheet1><table></table></Sheet1>";
XDocument doc = XDocument.Parse(header);
XElement table = doc.Root.Element("table");

foreach (DataRow row in dt.AsEnumerable())
{
    XElement rd = new XElement("rd", new object[] {
        new XElement("id", row["id"]),
        new XElement("name", row["name"]),
        new XElement("last", row["last"]),
        new XElement("phone", row["phone"]),
        new XElement("refF", new object[] {
            new XElement("adresse", row["adresse"]),
            new XElement("citie", row["citie"]),
        }),
        new XElement("age", row["age"]),
        new XElement("mp", new XElement("degree", row["mp"])),
        new XElement("dpa", row["dpa"])
    });

    table.Add(rd);
}
doc.Save(FILENAME);
字符串头=”;
XDocument doc=XDocument.Parse(标题);
XElement table=doc.Root.Element(“表”);
foreach(dt.AsEnumerable()中的数据行)
{
XElement rd=新XElement(“rd”,新对象[]{
新元素(“id”,第[“id”行]),
新元素(“名称”,行[“名称]),
新的XElement(“最后”,行[“最后]),
新XElement(“电话”,第[“电话”)行),
新元素(“refF”,新对象[]{
新XElement(“ADRESE”,第[“ADRESE”行]),
新XElement(“花旗”,第[“花旗”]行),
}),
新元素(“年龄”,第[“年龄”]行),
新元素(“mp”,新元素(“度”,行[“mp”)),
新元素(“dpa”,第[“dpa”]行)
});
表2.添加(rd);
}
文件保存(文件名);

我希望这对您有所帮助。

非常感谢。这是一个很好的解决方案,效果很好。如果你能帮我解决的话,我还有一个小问题?@Uzarsef不客气,我可以帮你。向我解释问题所在。我想创建一个按钮,将数据从datagridview导出到此xml文件,而不是将数据集作为表格从excel导入datatable@Uzarsef,不幸的是,我不太了解dataGridView的操作,但我认为您可以搜索如下内容:,我希望这能对你有所帮助。如果同时需要Sheet1和table,则XElement table=doc.subjections(“table”).First();最后从以下位置向表中添加行:sheet1.add(rd);至:表。添加(rd);是的,这就是我现在想要的,我的问题是保存按钮你已经有了一个保存方法。因此,如果您在全局空间中声明doc,您只需在按钮单击中执行doc.Save(文件名)即可。现在,我希望按钮显示Save对话框并选择保存xml文件的路径
  string header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Sheet1></Sheet1>";
            XDocument doc = XDocument.Parse(header);
            XElement sheet1 = doc.Root;

            foreach (DataRow row in dt.AsEnumerable())
            {
                XElement rd = new XElement("rd", new object[] {
                    new XElement("id", row["id"]),
                    new XElement("name", row["name"]),
                    new XElement("last", row["last"]),
                    new XElement("phone", row["phone"]),
                    new XElement("refF", new object[] {
                        new XElement("adresse", row["adresse"]),
                        new XElement("citie", row["citie"]),
                    }),
                    new XElement("age", row["age"]),
                    new XElement("mp", new XElement("degree", row["mp"])),
                    new XElement("dpa", row["dpa"])
                });

                sheet1.Add(rd);
            }

            doc.Save(FILENAME);

        }
string header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Sheet1><table></table></Sheet1>";
XDocument doc = XDocument.Parse(header);
XElement table = doc.Root.Element("table");
string header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Sheet1><table></table></Sheet1>";
XDocument doc = XDocument.Parse(header);
XElement table = doc.Root.Element("table");

foreach (DataRow row in dt.AsEnumerable())
{
    XElement rd = new XElement("rd", new object[] {
        new XElement("id", row["id"]),
        new XElement("name", row["name"]),
        new XElement("last", row["last"]),
        new XElement("phone", row["phone"]),
        new XElement("refF", new object[] {
            new XElement("adresse", row["adresse"]),
            new XElement("citie", row["citie"]),
        }),
        new XElement("age", row["age"]),
        new XElement("mp", new XElement("degree", row["mp"])),
        new XElement("dpa", row["dpa"])
    });

    table.Add(rd);
}
doc.Save(FILENAME);