我怎样才能创建这样的xml hieararcy?

时间:2010-07-10 13:36:12

标签: c# .net xml linq-to-xml

我想创建动态XML hieararchy,但仍然无法成功。我尝试过LinqToXml类和XML类,但我仍然不能。我想动态地在循环中创建这样的层次结构。

创建根节点

<Root></Root>

然后为它添加孩子。

<Root>
 <Biggest></Biggest>
</Root>

然后为最后添加的节点添加子项

<Root>
   <Biggest>
      <Bigger>
      </Bigger>
   </Biggest>
</Root>

然后再回去添加另一个

<Root>
   <Biggest>
      <Bigger>
      </Bigger>
      <Another>
      </Another>
  </Biggest>
</Root>

编辑:我想举个例子。

  XElement root = new XElement("root");
    XElement first = new XElement("first", "value");
    XElement second = new XElement("second", "Value");

    root.Add(first);
    //now how can add second node into first ??
    //I don't want to add second one into first then add it into root.

3 个答案:

答案 0 :(得分:4)

您可以直接创建xml结构:

XElement root = new XElement("root",
    new XElement("first", "value",
        new XElement("second", "Value")));

使用Element

等各种方法遍历节点
root.Element("first").Element("second").Add(new XElement("third", "Value"));
//or
root.Descendants("second").First().Add(new XElement("underTheThird", "Value"));

添加到任何元素:

root.Add(new XElement("underTheSecond", 456));

Microsoft有几个可供阅读的文档 - 例如Reference (LINQ to XML)

修改 - 收集了我在评论中发布的信息:

您可以先root.Add(first);再做first.Add(second);。你这样做的顺序并不重要。 Xml文档不像字符串那样构建,它是对象的层次结构 - 您可以在树中的任何位置添加新节点。

Add使用对象作为参数(与元素构造函数相同)。您可以添加任何XObject(可以添加)和任何其他可转换为XText的对象(字符串,数字,... - 主要使用XmlConvert)。

Freshblood:我认为XmlLinkedNode类提供了我需要的东西。
您可以使用NextNodePreviousNode属性来获取兄弟节点,使用Parent属性来获取当前节点的父节点。

虽然可以通过我在答案中发布的链接访问所有信息。

答案 1 :(得分:2)

如果我理解正确,你想创建XML元素然后回来并添加addtional子元素。您可能希望看一下使用XmLDocument类。

使用XElement,您也可以按照以下方式执行此操作

  XElement root = new XElement("Root");
  XElement biggest = new XElement("Biggest");
  XElement bigger = new XElement("Bigger");
  XElement another = new XElement("Another");

  root.Add(biggest);
  biggest.Add(bigger);
  biggest.Add(another);

此处每个步骤都会添加到层次结构中,但在每个临时步骤中,层次结构都是有效的XML。

<强> 更新 根据评论中的问题,我认为这就是你要找的东西

  root.Add(biggest);
  root.Element("Biggest").Add(bigger);      
  root.Element("Biggest").Add(another);

答案 2 :(得分:0)

不知道它是否有帮助,但我发现这些人的网站对使用xml文件非常有帮助。

http://www.codeproject.com/KB/XML/XML_Configuration_File.aspx

如果您使用它,请确保将所有实例包装在using..found中,这样做很难。