我的任务是从XML文件中绘制一个xml树。我设法使用openDialog组件打开一个xml文件,现在我有一个saveDialog Componet,它选择要写入的文件。现在我必须想出一个算法:
<Videos>
<Video>
<Title>The Distinguished Gentleman</Title>
<Director>Jonathan Lynn</Director>
<Actors>
<Actor>Eddie Murphy</Actor>
<Actor>Lane Smith</Actor>
<Actor>Sheryl Lee Ralph</Actor>
<Actor>Joe Don Baker</Actor>
</Actors>
<Length>112 Minutes</Length>
<Format>DVD</Format>
<Rating>R</Rating>
</Video>
<Video>
<Title>Her Alibi</Title>
<Director>Bruce Beresford</Director>
<Length>94 Mins</Length>
<Format>DVD</Format>
<Rating>PG-13</Rating>
</Video>
</Videos>
那就是:
<Videos>
---<Video>
-------<Title>
-------<Director>
-------<Actors>
--------------<Actor>
-------<Length>
-------<Format>
-------<Rating>
我认为这将在foreach声明中:
XDocument xdoc = XDocument.Load(pathToXML);
foreach (var element in XML.Descendants)
{
//code here ??
} ??
是的,我知道。但我有问题如何只选择一个子节点(没有方法)。我有类似的东西,但它仍然列出了所有元素,而不仅仅是结构:
public string GetOutline(int indentLevel, XElement element)
{
StringBuilder result = new StringBuilder();
result = result.AppendLine(new string('-', indentLevel * 2) + element.Name);
foreach (var childElement in element.Elements())
{
result.Append(GetOutline(indentLevel + 3, childElement));
}
return result.ToString();
答案 0 :(得分:2)
以递归方式访问树中的XElement节点。为每个元素写入元素名称。每次访问子节点时都会增加缩进,以便您知道要写入多少个“ - ”字符。