Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何创建这样的xml层次结构?_C#_.net_Xml_Linq To Xml - Fatal编程技术网

C# 如何创建这样的xml层次结构?

C# 如何创建这样的xml层次结构?,c#,.net,xml,linq-to-xml,C#,.net,Xml,Linq To Xml,我想创建动态XML层次结构,但仍然没有成功。我尝试了LinqToXml类和XML类,但仍然没有成功。我想动态地在循环中创建这样一个层次结构 创建根节点 <Root></Root> 如果我理解正确,您希望创建XML元素,然后返回并添加附加的子元素。您可能想看看如何使用该类来实现这一点 使用XElement还可以按如下方式执行此操作 XElement root = new XElement("Root"); XElement biggest = new XEleme

我想创建动态XML层次结构,但仍然没有成功。我尝试了LinqToXml类和XML类,但仍然没有成功。我想动态地在循环中创建这样一个层次结构

创建根节点

<Root></Root>

如果我理解正确,您希望创建XML元素,然后返回并添加附加的子元素。您可能想看看如何使用该类来实现这一点

使用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);

如果我理解正确,您希望创建XML元素,然后返回并添加附加的子元素。您可能想看看如何使用该类来实现这一点

使用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);

您可以直接创建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有几个文档可供阅读,例如

编辑-收集我在评论中发布的信息:

您可以执行
root.Add(首先)首先,然后先执行
。添加(第二)。你这样做的顺序并不重要。Xml文档不是像字符串一样构建的,它是对象的层次结构-您可以在树中的任何位置添加新节点

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

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


尽管所有这些信息都可以通过我在回答中发布的链接访问。

您可以直接创建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有几个文档可供阅读,例如

编辑-收集我在评论中发布的信息:

您可以执行
root.Add(首先)首先,然后先执行
。添加(第二)。你这样做的顺序并不重要。Xml文档不是像字符串一样构建的,它是对象的层次结构-您可以在树中的任何位置添加新节点

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

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


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

不知道是否有帮助,但我发现这个家伙的网站对处理xml文件非常有用


如果您使用它,请确保将所有实例包装在using中。。这是一个很难解决的问题。

不知道它是否有用,但我发现这个家伙的网站对处理xml文件非常有用


如果您使用它,请确保将所有实例都包装在using中。。找到了困难的解决方法。

似乎很简单。你有什么问题?你到底想做什么?这种结构看起来根本不需要一个循环。您是否对创建的元素使用
Add
方法?有一种递归方法,我想将值树放入一个XML文件中。你可以给出一个例子,如何在树层次结构中导航并添加子元素然后先执行
。添加(第二个)
。你这样做的顺序并不重要。Xml文档不是像字符串一样构建的,它是对象的层次结构-您可以在树中的任何位置添加新节点。@Freshblood:
add
使用对象作为参数(与元素构造函数相同)。您可以添加任何
XObject
(可以添加)和任何其他可转换为
XText
(字符串、数字,…-主要使用
XmlConvert
)的对象。看起来很简单。你有什么问题?你到底想做什么?这种结构看起来根本不需要一个循环。您是否对创建的元素使用
Add
方法?有一种递归方法,我想将值树放入一个XML文件中。你可以给出一个例子,如何在树层次结构中导航并添加子元素然后先执行
。添加(第二个)
。你这样做的顺序并不重要。Xml文档不是像字符串一样构建的,它是对象的层次结构-您可以在树中的任何位置添加新节点。@Freshblood:
add
使用对象作为参数(与元素构造函数相同)。您可以添加任何
XObject
(可以添加)和任何其他可转换为
XText
(字符串、数字,…-主要使用
XmlConvert
)的对象。是否可以在不使用过大引用的情况下将较大的对象添加到最大值?我的意思是用rootreferance@Freshblood,我补充了一个我认为你要求的例子。如果我误解了,请告诉我。我无法很好地解释我的问题。