使用c#计算XML标记中的“元素”数

时间:2012-12-18 01:39:30

标签: c# xml

我正在使用C#读取XML文件并计算XML标记中有多少“元素”,例如......

<Languages>English, Deutsche, Francais</Languages>

Languages标签内有3个“元素”:英语,德语和法语。我需要知道如何计算它们并返回有多少元素的值。标签的内容可能会随着时间的推移而变化,因为XML文件必须扩展/容纳其他语言(如果需要)。

如果无法做到这一点,请建议解决问题的方法。谢谢。

编辑:我还没有提出读取XML文件的代码,但我也有兴趣学习如何使用。

编辑2:对问题的修改

3 个答案:

答案 0 :(得分:5)

string xml = @"<Languages>English, Deutsche, Francais</Languages>";
var doc = XDocument.Parse(xml);

string languages = doc.Elements("Languages").FirstOrDefault().Value;
int count = languages.Split(',').Count();

为了响应您的编辑,这些编辑表明您不是简单地尝试从XML元素中提取逗号分隔的字符串,那么您首先存储XML的方法是不正确的。正如另一张海报评论的那样,它应该是:

<Languages>
    <Language>English</Language>
    <Language>Deutsche</Language>
    <Language>Francais</Language>
</Languages>

然后,获得语言计数:

string xml = @"<Languages>
                   <Language>English</Language>
                   <Language>Deutsche</Language> 
                   <Language>Francais</Language>
               </Languages>";

var doc = XDocument.Parse(xml);

int count = doc.Element("Languages").Elements().Count();

答案 1 :(得分:3)

首先,一个“理想”的解决方案:不要在一个标签中放置多条信息。相反,将每种语言放在自己的标记中,如下所示:

<Languages>
    <Language>English</Language>
    <Language>Deutsche</Language>
    <Language>Francais</Language>
</Languages>

如果无法做到这一点,请使用多种语言检索标记的内容,使用allLanguages.Split(',', ' ')进行拆分,并通过检查结果数组的长度来获取计数。

答案 2 :(得分:0)

好的,但为了清楚起见,XML Element具有非常具体的含义。实际上,您拥有的整个代码块都是XML元素。

XElement xElm = new XElement("Languages", "English, Deutsche, Francais");
string[] elements = xElm.Value.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);