Linq 到 xml。判断标签结束

Linq to xml. Determine the end of the tag

我有一块 xml 如下:

<side>
 <category>
   <title>Head</head>
   <item> Mister a </item>
 </category>
 <category>
   <title>Head</head>
   <item> Mister x </item>
   <item> Mister y </item>
 </category>
</side>

我正在恢复每个类别的标题和项目,一旦到达类别的末尾,放置一个允许分隔类别的分隔符。现在我可以很好地恢复每个类别标题和项目,但我不能在两个类别之间放置分隔符

这是我的 C# 代码:

foreach (XElement node in doc.Descendants("category").Elements())
        {

                if (node.Name.LocalName.Equals("titre"))
                {
                    layout.Records.Add(new XMLRecord()
                    {
                        Type = "Titre",
                        Contenu = node.Value
                    });

                }
                else if (node.Name.LocalName.Equals("item"))
                {
                    layout.Records.Add(new XMLRecord()
                    {
                        Type = "Item",
                        Contenu = node.Value
                    });

                }
                else if (node.Name.LocalName.Equals("item") && node.NextNode == null)
                {
                    layout.Records.Add(new XMLRecord()
                    {
                        Type = "Item",
                        Contenu = node.Value
                    });

                    layout.Records.Add(new XMLRecord()
                    {
                        Type = "Separateur",
                        Contenu = ""
                    });


                }




        }
        return layout.Records;

这应该是这样的 -

foreach (XElement node in doc.Descendants("category").Elements())
        {
            if (node.Name.LocalName.Equals("titre"))
            {
                layout.Records.Add(new XMLRecord()
                {
                    Type = "Titre",
                    Contenu = node.Value
                });
            }
            //This check requires here because at every item you won't get NextNode null except last one.
            else if (node.Name.LocalName.Equals("item") && node.NextNode == null)
            {
                layout.Records.Add(new XMLRecord()
                {
                    Type = "Item",
                    Contenu = node.Value
                });

                layout.Records.Add(new XMLRecord()
                {
                    Type = "Separateur",
                    Contenu = ""
                });
            }
            else if (node.Name.LocalName.Equals("item"))
            {
                layout.Records.Add(new XMLRecord()
                {
                    Type = "Item",
                    Contenu = node.Value
                });

            }
        }
        return layout.Records;