给定一个输入XML文件,绘制其树状结构

本文关键字:绘制 文件 结构 XML 输入 一个 | 更新日期: 2023-09-27 17:54:38

我的任务是从一个xml文件中绘制一个xml树。我设法打开一个xml文件使用openDialog组件,现在我有一个saveDialog组件选择一个文件写入。现在我必须想出一个算法来:

   <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();

给定一个输入XML文件,绘制其树状结构

递归访问树中的XElement节点。为每个元素写入元素名称。每次访问子节点时增加缩进,以便知道要写入多少个'-'字符。