嵌套LINQ到XML检索



我有一个结构如下的XML文件…

<Tournament TeamPlayers="1">
<Teams>
<Team>
<TeamID></TeamID>
<Name></Name>
<Status></Status>
<Memo></Memo>
<ByeRounds></ByeRounds>
<Players>
<Player Seat="A">
<MemberNo></MemberNo>
<MemberName></MemberName>
<PlayerFirstName></PlayerFirstName>
<PlayerLastName></PlayerLastName>
</Player>
</Players>
</Team>
</Teams>
<Staff>
<Player>
<MembershipNo></MembershipNo>
<PlayerFirstName></PlayerFirstName>
<PlayerLastName></PlayerLastName>
<MembershipName></MembershipName>
<Position></Position>
</Player>
</Staff>

<Penalties>
<Penalty>
<Judge></Judge>
<Player></Player>
<InfractionType></InfractionType>
<PenaltyType></PenaltyType>
<Notes></Notes>
</Penalty>
</Penalties>
</Tournament>

我的想法是,我将遍历每个子节点(Teams,Staff,Penalty)并将每个子节点分配到一个列表中。我有下面的代码开始,但不能弄清楚如何进入嵌套的Players元素,并将其分配给.tpPlayerA作为New PlayerInfo结构的一部分。

Dim TeamsNodes = xDoc.Descendants("Teams")
lstOutputTeams = team.Descendants("Team").[Select](Function(t) New TournamentTeam With {
.intTeamID = t.Element("TeamID"),
.intByeRounds = t.Element("ByeRounds"),
.strTeamName = t.Element("Name"),
.strMemo = t.Element("Memo"),
.intStatus = t.Element("Status"),
.tpPlayerA = (From p In team.Descendants("Players") Select New PlayerInfo With {
.strMembershipNo = p.Element("MemberNo").Value,
.strPlayerFirstName = p.Element("PlayerFirstName").Value,
.strPlayerLastName = p.Element("PlayerLastName").Value,
.strMembershipName = p.Element("MemberName")})
}).ToList()
Next
lstFinalOutput.Add(lstOutputTeams)

(上面的答案是:嵌套LINQ到XML)

然而,运行上述程序,我得到了错误"输入字符串格式不正确"。我哪里出错了?

我想我错过了什么…但是,

Dim xe As XElement
'to load from file
'xe = XElement.Load("path")
' testing use literal
xe = <Tournament TeamPlayers="1">
<Teams>
<Team>
<TeamID></TeamID>
<Name></Name>
<Status></Status>
<Memo></Memo>
<ByeRounds></ByeRounds>
<Players>
<Player Seat="A">
<MemberNo></MemberNo>
<MemberName></MemberName>
<PlayerFirstName></PlayerFirstName>
<PlayerLastName></PlayerLastName>
</Player>
</Players>
</Team>
</Teams>
<Penalties>
<Penalty>
<Judge></Judge>
<Player></Player>
<InfractionType></InfractionType>
<PenaltyType></PenaltyType>
<Notes></Notes>
</Penalty>
</Penalties>
<Staff>
<Player>
<MembershipNo></MembershipNo>
<PlayerFirstName></PlayerFirstName>
<PlayerLastName></PlayerLastName>
<MembershipName></MembershipName>
<Position></Position>
</Player>
</Staff>
</Tournament>
Dim staff As List(Of XElement)
Dim teams As List(Of XElement)
Dim penalties As List(Of XElement)
staff = (From el In xe.<Staff>.<Player>
Select el).ToList
teams = (From el In xe.<Teams>.<Team>
Select el).ToList
penalties = (From el In xe.<Penalties>.<Penalty>
Select el).ToList

最新更新