首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将XML子节点添加到父节点c#

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

Stack Overflow用户
提问于 2020-05-09 14:26:49
回答 1查看 1.2K关注 0票数 1

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

当前的xml文件如下所示:

代码语言:javascript
复制
 <?xml version="1.0" encoding=""?>
<sheet1>


  <rd>
    <id>45</id>
    <name>alex</name>
    <last>chali</last>
    <phone>33666998565</phone>
    <refF>
      <adresse>41301 US Hwy 280, Sylacauga AL 35150</adresse>
      <citie>NY</citie>
    </refF>
    <age>30</age>
    <mp>
      <degree>2</degree>
    </mp>
    <dpa>1</dpa>
  </rd>
  <rd>
    <id>89</id>
    <name>anna</name>
    <last>marie</last>
    <phone>336465798465</phone>
    <refF>
      <adresse>30 Memorial Drive, Avon MA 2322</adresse>
      <citie>LA</citie>
    </refF>
    <age>28</age>
    <mp>
      <degree>2</degree>
    </mp>
    <dpa>1</dpa>
  </rd>

</sheet1>

正在寻找什么:

代码语言:javascript
复制
<?xml version="1.0" encoding=""?>
<sheet1>

**<table>  // i want that contain all table rows**

  <rd>
    <id>45</id>
    <name>alex</name>
    <last>chali</last>
    <phone>33666998565</phone>
    <refF>
      <adresse>41301 US Hwy 280, Sylacauga AL 35150</adresse>
      <citie>NY</citie>
    </refF>
    <age>30</age>
    <mp>
      <degree>2</degree>
    </mp>
    <dpa>1</dpa>
  </rd>

  **</table>**
</sheet1>

这是我的代码:

代码语言:javascript
复制
  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);

        }

代码将'sheet1‘显示为包含'rd’的根元素,但实际上我希望它作为‘表’中的子元素。如何重新构造它?注意,我只能使用xDocument而不是xmlDocument。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-09 16:42:18

1-您可以将table标记添加到header中,例如:

代码语言:javascript
复制
string header = "<?xml version=\"1.0\" encoding=\"utf-8\" ?><Sheet1><table></table></Sheet1>";

2-而不是获取Root,而是获取table元素,如:

代码语言:javascript
复制
XDocument doc = XDocument.Parse(header);
XElement table = doc.Root.Element("table");

结果

代码语言:javascript
复制
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);

我希望你觉得这有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61698299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档