我正在使用C#读取XML文件并计算XML标记中有多少“元素”,例如......
<Languages>English, Deutsche, Francais</Languages>
Languages标签内有3个“元素”:英语,德语和法语。我需要知道如何计算它们并返回有多少元素的值。标签的内容可能会随着时间的推移而变化,因为XML文件必须扩展/容纳其他语言(如果需要)。
如果无法做到这一点,请建议解决问题的方法。谢谢。
编辑:我还没有提出读取XML文件的代码,但我也有兴趣学习如何使用。编辑2:对问题的修改
答案 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);