1

私の仕事は、XMLファイルからxmlツリーを描画することです。openDialogコンポーネントを使用してxmlファイルを開くことができました。これで、書き込むファイルを選択する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 ??

    }   ??

はい、知っています。しかし、子ノードを1つだけ選択する方法に問題があります(このための方法はありません)。私はそのようなものを持っていますが、それでも構造だけでなくすべての要素がリストされています:

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

1 に答える 1

2

ツリー内の XElement ノードに再帰的にアクセスします。各要素について、要素名を書きます。子ノードにアクセスするたびにインデントを増やして、書きたい「-」文字の数がわかるようにします。

于 2013-01-20T02:03:02.630 に答える