Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
16 / 16 / 4
Регистрация: 01.03.2013
Сообщений: 139
Записей в блоге: 1
1

Linq to XML - убрать лишние теги при парсинге

28.08.2013, 20:37. Показов 2186. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, не могли бы вы мне помочь пожалуйста. Я пытаюсь распарсить страницу, но вот одна проблема вышла, после того как я попытался распарсить страницу, он мне вывел теги, как их убрать. Вот мой код.
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Linq;
 
namespace билеты
{
    class Program
    {
        static void Main(string[] args)
        {       
            try
            {
                XDocument doc = XDocument.Load("rss.xml");
                var ned = from item in doc.Descendants("item")
                          select new
                           {
                               title = item.Element("title").Value,
                               description = item.Element("description").Value,
                               category = item.Element("category").Value,
 
                           };
                int i = 1;
                foreach (var need in ned)
                {
                    Console.WriteLine(need.title.ToString());
                    Console.WriteLine("********************************");
                    Console.WriteLine(need.description.ToString());
                    Console.WriteLine("********************************");
                    Console.WriteLine(need.category.ToString());
                    Console.WriteLine("********************************");
                    i++;
                    if (i == 4) break;
                }
            }
            catch
            {
                Console.WriteLine("Ошибка! Отсутствует подключеие или данная страница не существует.");
            }
            Console.ReadKey();
          }
            
        }
    }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2013, 20:37
Ответы с готовыми решениями:

Отсеять все теги HTML при парсинге
А можно как-то когда парсишь, отсеить все теги HTML. А то я беру тело с новостью и там куча всяких...

LINQ to XML: убрать автоформатирование текста
Здравствуйте, такая проблема возникла: Мне нужно записать в XElement форматированный текст,...

Ошибка при парсинге XML
Досталась XML'ка с ошибкой, каждое случайно число строк (зависимость не искали), появляется какой...

Ошибка при парсинге XML
День добрый имеется вот такой xml: <?xml version="1.0"?> <urlset...

3
141 / 182 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
28.08.2013, 22:18 2
Чтобы воспроизвести ошибку нужен Ваш файл rss.xml.
0
16 / 16 / 4
Регистрация: 01.03.2013
Сообщений: 139
Записей в блоге: 1
29.08.2013, 12:31  [ТС] 3
Цитата Сообщение от Alex9 Посмотреть сообщение
Чтобы воспроизвести ошибку нужен Ваш файл rss.xml.
Ах да простите забыл код подправить, вот ссылка: http://www.seedoff.net/rss.php?c=3
0
141 / 182 / 44
Регистрация: 25.04.2012
Сообщений: 2,623
Записей в блоге: 5
29.08.2013, 14:42 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Ваша программа выбирает первый элемент item и в нем - содержимое тэга description. Внутри тэга содержатся символьные данные: <![CDATA[<div align='center' style='t...........
http://ru.wikipedia.org/wiki/CDATA
Вот оттуда и берутся тэги. Вы можете получить полный код документа так:
C#
1
2
3
XDocument doc = XDocument.Load("http://www.seedoff.net/rss.php?c=3");
                string test = @doc.ToString();
                System.IO.File.WriteAllText("test.txt",@test,Encoding.GetEncoding(1251));//сохранит в папку бинарников
Вы можете разобрать эти тэги тем же способом, что у Вас уже реализован, например создать документ в цикле:
C#
1
2
System.IO.File.WriteAllText("desc.txt", @need.description.ToString(), Encoding.GetEncoding(1251));
                    var doctest = XDocument.Parse(need.description);
Или использовать HtmlAgilityPack для разбора тэгов html. Если Вам нужно вообще убрать тэги, то Вы можете удалить всё, что заключено в символы < и >. В этом Вам может помочь метод IndexOf http://www.dotnetperls.com/indexof
1
29.08.2013, 14:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.08.2013, 14:42
Помогаю со студенческими работами здесь

Кириллица при парсинге XML
Приветствую всех! Пишу программу на Android. В программе закачиваю из интернета XML: &lt;trk&gt; ...

Как убрать пробелы при парсинге
Доброго времени суток, при парсинге выводит много пробелов а потом только сам парс, как можно...

Убрать скобки при парсинге лога
Возникла необходимость написать очередной парсер :) Есть файл-лог (например, card.log), в нём...

Вытащить атрибут при парсинге xml
День добрый, надо распарсить xml документ и все получилось, кроме одного: не могу вытащить атрибут...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru