搜索结果xml,c# - Windows应用商店

时间:2013-05-04 14:46:56

标签: c# xml linq xaml windows-store-apps

美好的一天,我正在创建一本应用程序圣经,我在搜索这节经文时遇到了麻烦(“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;
    }

1 个答案:

答案 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子节点作为结果。