Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Гайка
2 / 2 / 2
Регистрация: 23.03.2012
Сообщений: 61
#1

Как правильно "спарсить" значение - C#

23.03.2012, 18:13. Просмотров 917. Ответов 7
Метки нет (Все метки)

Такой вопрос касаемо парсинга. Есть такой код с "Charles" из приложения Вконтакте, его нужно правильно спарсить.
Мне нужно что бы в программе показывало числа из droppedKeys.
Просто parse(text, "<droppedKeys>", "</droppedKeys") не подходит!
Если что то не понятно, пишите!
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<playerWins>
                        <playerWin>
            <bossId>1</bossId>
            <droppedKeys>92</droppedKeys>
            <winCount>768</winCount>
            <lastAttack>1332369759</lastAttack>
            <coolWinCount>0</coolWinCount>
            <epicWinCount>0</epicWinCount>
        </playerWin>
 
 
        <playerWin>
            <bossId>2</bossId>
            <droppedKeys>5</droppedKeys>
            <winCount>209</winCount>
            <lastAttack>1332415517</lastAttack>
            <coolWinCount>11</coolWinCount>
            <epicWinCount>6</epicWinCount>
        </playerWin>
 
 
        <playerWin>
            <bossId>3</bossId>
            <droppedKeys>0</droppedKeys>
            <winCount>65</winCount>
            <lastAttack>1331448157</lastAttack>
            <coolWinCount>0</coolWinCount>
            <epicWinCount>0</epicWinCount>
        </playerWin>
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2012, 18:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как правильно "спарсить" значение (C#):

Как синтаксически правильно использовать оператор "and" в цикле "if"?
Исходный код string id = textBox2.Text; foreach (DataRow row in...

Как вычислить значение "y" на интервале "x" по графику функции?
Как вычислить значение &quot;y&quot; на интервале &quot;x&quot; по графику функции.

Спарсить Html и получить все, что находится в тегах "code"
Есть страница форума, на ней есть теги CODE в сообщениях. Мне нужно спарсить...

Графический редактор и ошибка "System.Windows.Forms.Cursor" является "тип", но используется как "переменная"
Всем привет.Пишу программу простейший графический редактор.Нужно,чтобы при...

Как считать булевы значения: "Неявное преобразование типа "string" в "bool" невозможно"
Здравствуйте. Возник такой вопрос: а как считать булевы значения? Почему такой...

Ошибка 2 "Files.StreamRider.StreamWriter" является "пространство имен", но используется как "тип"
Получаю следующую ошибку { FileStream Q1 = new...

7
FutureCome
104 / 104 / 9
Регистрация: 19.12.2010
Сообщений: 417
Завершенные тесты: 2
23.03.2012, 20:31 #2
Либо используйте работу с Xml (XmlDocument), либо с регулярными выражениями (Пример. Поиск ссылок HREF). Я бы выбрал регулярные выражения.
1
Artishok
ЧакЭ одобряЭ
280 / 279 / 84
Регистрация: 27.12.2009
Сообщений: 1,767
24.03.2012, 04:14 #3
можно так
C#
1
2
3
4
5
6
7
var v = from c in el.Descendants("droppedKeys")
            where c.Name == "droppedKeys"
            select c.Value;
foreach (var drk in v)
{
    Сonsole.WriteLine(drk);
}
1
Гайка
2 / 2 / 2
Регистрация: 23.03.2012
Сообщений: 61
24.03.2012, 08:26  [ТС] #4
Artishok, так не подходит! т.к когда парсишь должны быть значения
droppedKeys - Достижение человека
bossId - Чье достижение
0
FutureCome
104 / 104 / 9
Регистрация: 19.12.2010
Сообщений: 417
Завершенные тесты: 2
24.03.2012, 09:58 #5
А чем регулярные выражения не нравятся или полный обход XmlDocument?
0
Петррр
6155 / 3455 / 896
Регистрация: 28.10.2010
Сообщений: 5,926
24.03.2012, 10:19 #6
Лучший ответ Сообщение было отмечено как решение

Решение

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?xml version="1.0" encoding="utf-8"?>
<playerWins>
  <playerWin>
    <bossId>1</bossId>
    <droppedKeys>92</droppedKeys>
    <winCount>768</winCount>
    <lastAttack>1332369759</lastAttack>
    <coolWinCount>0</coolWinCount>
    <epicWinCount>0</epicWinCount>
  </playerWin>
  <playerWin>
    <bossId>2</bossId>
    <droppedKeys>5</droppedKeys>
    <winCount>209</winCount>
    <lastAttack>1332415517</lastAttack>
    <coolWinCount>11</coolWinCount>
    <epicWinCount>6</epicWinCount>
  </playerWin>
  <playerWin>
    <bossId>3</bossId>
    <droppedKeys>0</droppedKeys>
    <winCount>65</winCount>
    <lastAttack>1331448157</lastAttack>
    <coolWinCount>0</coolWinCount>
    <epicWinCount>0</epicWinCount>
  </playerWin>
</playerWins>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
 
[XmlRoot("playerWins")]
public class Players
{
    public Players()
    {
        this.PlayersWin = new List<Player>();
    }
 
    [XmlElement("playerWin")]
    public List<Player> PlayersWin
    { get; set; }
}
 
public class Player
{
    [XmlElement("bossId")]
    public int BossId
    { get; set; }
 
    [XmlElement("droppedKeys")]
    public int DroppedKeys
    { get; set; }
 
    [XmlElement("winCount")]
    public int WinCount
    { get; set; }
 
    [XmlElement("lastAttack")]
    public int LastAttack
    { get; set; }
 
    [XmlElement("coolWinCount")]
    public int coolWinCount
    { get; set; }
 
    [XmlElement("epicWinCount")]
    public int EpicWinCount
    { get; set; }
}
 
static class Program
{
    static void Main()
    {
        XmlSerializer ser = new XmlSerializer(typeof(Players));
        FileStream stream = new FileStream("C:\\players.xml", FileMode.Open, FileAccess.Read);
        Players players = (Players)ser.Deserialize(stream);
        stream.Close();
        foreach (Player player in players.PlayersWin)
            Console.WriteLine(player.WinCount);
    }
}
3
Гайка
2 / 2 / 2
Регистрация: 23.03.2012
Сообщений: 61
24.03.2012, 10:28  [ТС] #7
Петррр, спасибо. Сейчас попробую

Добавлено через 6 минут
брр теперь я вообще запутался
0
Learx
1045 / 852 / 194
Регистрация: 31.03.2010
Сообщений: 2,486
24.03.2012, 20:10 #8
класс Player имеет ту же структуру что и твой элемент playerWin в файле.
класс Players - список класса Player
классы создаются таким образом, чтоб объяснить сериализатору что куда записывать.
потом штатным классом XmlSerializer данные извлекаются из файла и помещаются в объект Players players
0
24.03.2012, 20:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2012, 20:10
Привет! Вот еще темы с решениями:

Как исправить ошибки:"Ни одна из перегрузок метода "ReadLine" не принимает "1" аргументов"
Как исправить ошибки: &quot;Нeявное преобразование типа double в bool...

ошибка CS0118: "TreeView" является "пространство имен", но используется как "тип"
Всем привет.Пишу WebPart для SharePoint, пытаюсь сделать TreeView для...

Проверить, правильно ли в тексте записаны буквосочетания "жи" и "ши"
Дана последовательность слов. Проверить, правильно ли в нем записаны...

Правильно, что "%" это "деление по модулю"?
Правильно, что &quot;%&quot; это &quot;деление по модулю&quot;?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru