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;
我有一块 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;