【发布时间】:2018-10-17 12:20:49
【问题描述】:
我有一个如下所示的 XML 文件:
<instance>
<ID>2</ID>
<start>213.5000000000</start>
<end>231.3900001049</end>
<code>Away Pass</code>
<label>
<group>Pass</group>
<text>SuccessfullyCompleted</text>
</label>
<label>
<group>PassDistance</group>
<text>Medium</text>
</label>
<label>
<group>Player</group>
<text>John Doe</text>
</label>
</instance>
<instance>
<ID>3</ID>
<start>214.0000000000</start>
<end>225.0000000000</end>
<code>Kickoff</code>
<label>
<text>Pass</text>
</label>
</instance>
<instance>
<ID>4</ID>
<start>215.0000000000</start>
<end>226.0000000000</end>
<code>ShotOnGoal</code>
</instance>
所以每个实例可以不包含一个或多个标签,每个标签都包含一个文本,而一些标签包含一个文本和一个组。
所以我的问题是:我想为每个实例在一个字符串中获取这些值。每个文本应该用逗号分隔,每个组应该与它所属的文本一起用一个“=”。因此,例如对于第一个例子,字符串应该看起来像
“通过 = 成功完成,通过距离 = 中等,玩家 = John Doe”
我真的不知道如何实现这一点,因此我的代码在我阅读彼此分开的组和文本时看起来像这样:
var labelsGroupsTmp = from label in instance.Elements("label") select label.Element("group").Value;
string labelsGroups = string.Join(",", labelsGroupsTmp.ToArray());
var labelsTextTmp = from label in instance.Elements("label") select label.Element("text").Value;
string labelsText = string.Join(",", labelsTextTmp.ToArray());
感谢您的帮助!
【问题讨论】:
-
Id=3 的实例没有组元素,该特定情况的结果应该是什么样的?
-
另外,第三个实例呢?没有标签,所以应该忽略该特定实例吗?
-
@RuiJarimba 如果没有像实例 2 (ID=3) 这样的组,我只想拥有文本。如果在实例 3 (ID=4) 中根本没有标签,则它应该为空/忽略
-
根据您的反馈修正了我的答案。顺便说一句,您使用的是哪个 .NET 版本?
-
@RuiJarimba 我不太确定,因为我正在统一使用它(版本 2018.2.2f1)。我不知道在哪里可以弄清楚那里使用的是哪个版本的 .NET,但我认为它应该是 3.5 版
标签: c# .net xml string unity3d