美好的一天,我正在创建一本应用程序圣经,我在搜索这节经文时遇到了麻烦(“v”)。我创建了整个结构可以过滤书(“b”),然后它加载所有章节(“c”)的列表,当你选择一个章节时,它创建一个列表并加载所有的经文。现在我想整理一个代码,以便当用户点击列表编号时,会显示这节经文的文字。
XML
<?xml version="1.0" encoding="UTF-8"?>
<bible>
<b n="Gênesis" indice="1">
<c n="1">
<v n="1">text text</v>
<v n="2">text text text</v>
</c>
<c n="2">
<v n="1">text text</v>
<v n="2">text text text</v>
</c>
<b n="Êxodo" indice="2">
<c n="1">
<v n="1">text text</v>
<v n="2">text text text</v>
</c>
<c n="2">
<v n="1">text text</v>
<v n="2">text text text</v>
</c>
</b>
</bible>
C#
private void listBoxTeste1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int selectedindex = listBoxTeste1.SelectedIndex;
//Carregar o arquivo xml
XDocument xdoc = XDocument.Load("biblia.xml");
var players = from player in xdoc.Descendants("v")
where (string)player.Attribute("n") == selectedindex.ToString()
select new
{
Versiculo = (string)player.Element("v")
};
//listBox2.ItemsSource = players;
nameInput.Text = nameInput.Text + " " + players;
}
答案 0 :(得分:0)
我实际上对这个问题并不十分清楚,但由于代码有一些错误,我认为这是你需要帮助的东西;
var players = from player in xdoc.Descendants("c")
where (string)player.Attribute("n") ==
selectedindex.ToString(CultureInfo.InvariantCulture)
select new
{
Versiculo = player.Elements("v").Select(x => x.Value)
};
Console.WriteLine(String.Join(", ", players.First().Versiculo));
players
将在v
中返回字符串集合(Versiculo
节点内的项目),并将其打印出,
加入。
使它返回没有结果的是你获得了第一个匹配的v
节点,然后尝试将v
子节点作为结果。