FastGameDev
@FastGameDev
Заглючим весь мир!!!

Как спарсить данные атрибутов в Opml на C#?

Захотелось мне разобраться в работе RSS, получение фидов по url реализовать смог. Но тут вдруг решил научится парсить opml (xml), и получать эти самые ссылки из файла. Но вот не задача. В консоль вылетает пустая строка. Думал сначала вообще готовым парсером воспользоваться. Вот кстати он. Но он почему-то не заработал.

Вопрос состоит в следующем. Как правильно получить из файла opml атрибут title и xmlUrl, внутри тега outline?
Вот код которым я пытался получить xmlUrl:

XmlDocument xDoc = new XmlDocument();
            xDoc.Load("Путь к файлу OPML");
            XmlElement? xRoot = xDoc.DocumentElement;
            if (xRoot != null)
            {
                foreach (XmlElement xnode in xRoot)
                {
                    XmlNode? attr = xnode.Attributes.GetNamedItem("xmlUrl");
                    Console.WriteLine(attr?.Value);
                }
            }


Xml который пытаюсь парсить:
<?xml version="1.0" encoding="UTF-8"?>
<opml version="1.0">
 <head>
  <text/>
 </head>
 <body>
  <outline id="3893252444" isOpen="false" text="LinuxNews">
   <outline archiveMode="globalDefault" type="rss" description="Below is a brief look at recent changes in the KDE projects I work on and follow!" logoWidth="88" copyright="" xmlUrl="https://pointieststick.com/feed/" maxArticleAge="0" text="Adventures in Linux and KDE" title="Adventures in Linux and KDE" comment="" fetchInterval="0" version="RSS" id="880782757" logoHeight="31" maxArticleNumber="0" htmlUrl="https://pointieststick.com" faviconUrl="file:///home/fast/.cache/favicons/s1.wp.com_i_favicon.png" useCustomFetchInterval="false" logoUrl="https://s0.wp.com/i/buttonw-com.png"/>
   <outline archiveMode="globalDefault" type="rss" description="Planet KDE | English" logoWidth="48" copyright="" xmlUrl="https://planet.kde.org/index.xml" maxArticleAge="0" text="Planet KDE | English" title="Planet KDE | English" comment="" fetchInterval="0" version="RSS" id="1584567894" logoHeight="48" maxArticleNumber="0" htmlUrl="https://planet.kde.org/" faviconUrl="file:///home/fast/.cache/favicons/planet.kde.org.png" useCustomFetchInterval="false" logoUrl="https://planet.kde.org/img/planet.png"/>
  </outline>
 </body>
</opml>
  • Вопрос задан
  • 37 просмотров
Решения вопроса 1
FastGameDev
@FastGameDev Автор вопроса
Заглючим весь мир!!!
Я как всегда пошел по странному пути. Все на самом деле делается вот так.

static void Main(string[] args)
        {            
            XmlReader xmlReader = XmlReader.Create("Путь к файлу.");
            while (xmlReader.Read())
            {
                if (xmlReader.NodeType == XmlNodeType.Element)
                {
                    if (xmlReader.HasAttributes)
                        Console.WriteLine(xmlReader.GetAttribute("title") + ": " + xmlReader.GetAttribute("xmlUrl"));
                }
            }
        }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы