0

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

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

Languages 标签中有 3 个“元素”:English、Deutsche 和 Francais。我需要知道如何计算它们并返回有多少元素的值。标签的内容可能会随着时间而改变,因为 XML 文件必须扩展/适应其他语言(在需要时)。

如果这是不可能的,请为该问题提出解决方法。谢谢你。

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

编辑 2:对问题的修改

4

3 回答 3

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();
于 2012-12-18T01:46:33.287 回答
3

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

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

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

于 2012-12-18T01:49:43.720 回答
0

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

XElement xElm = new XElement("Languages", "English, Deutsche, Francais");
string[] elements = xElm.Value.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
于 2012-12-18T01:58:49.010 回答