Как получить xml по url

Чтение данных XML из URL с помощью Visual C#

В этой статье показано, как использовать класс XmlTextReader для чтения XML из URL. Потоковая информация может поступать из различных источников, таких как поток байтов с сервера, файл или класс TextReader.

Исходная версия продукта: Visual Studio
Исходный номер базы знаний: 307643

Требования

В этой статье предполагается, что вы знакомы со следующими темами:

  • Microsoft Visual Studio
  • Терминология XML
  • Создание и чтение URL-адресов XML
  • и создание конечной точки XML

Эта статья посвящена системе .NET Framework. классы пространства имен. Xml.

Чтение данных XML из URL

В этом примере используется файл с именем Books.xml . Вы можете создать свой собственный файл Books.xml или использовать образец файла, входящий в комплект .NET Software Development Kit (SDK) Quickstart. Этот файл также доступен для скачивания. См. первую запись в разделе «Ссылки» этой статьи, чтобы узнать расположение загрузки.

Скопируйте Books.xml в папку \Inetpub\Wwwroot на вашем компьютере.

Откройте Visual Studio.

Создайте консольное приложение Visual C#. Вы можете перейти к разделу «Полный листинг кода» или создать приложение, выполнив следующие шаги.

Поместите директиву using в пространство имен System.Xml XmlTextReader, чтобы вам не нужно было уточнять объявления классов позже в ваш код. Директива using должна использоваться перед любыми другими объявлениями.

Получить XML-поток с использованием URL-адреса. Потоки используются для обеспечения независимости устройств; следовательно, при смене источника передачи никаких изменений в программе не требуется. Объявите константу для URL-адреса http://localhost/books.xml . Константа будет использоваться на следующем шаге с XmlTextReader. Добавьте следующий пример кода в основную процедуру класса по умолчанию:

Создайте экземпляр класса и задайте для XmlTextReader URL-адрес. Обычно вы используете XmlTextReader, если вам нужно получить доступ к XML как к необработанным данным без накладных расходов doM. Таким образом, XmlTextReader обеспечивает более быстрый механизм чтения XML. Класс XmlTextReader имеет несколько конструкторов, которые указывают расположение XML-данных. Следующий код создает экземпляр объекта XmlTextReader и передает URL-адрес конструктору:

Этот шаг демонстрирует базовый внешний цикл while, а следующие два шага описывают, как использовать этот цикл и читать XML.

После загрузки XmlTextReader выполняет последовательное чтение для просмотра данных XML и использует метод Read для извлечения следующей записи. Метод возвращает false, если больше нет входных данных для чтения.

Проверьте узлы. Для обработки данных XML каждая запись имеет тип узла, который можно определить из свойства NodeType. Свойства Name и Value — это имя узла (имена элементов и атрибутов) и значение узла (текст узла) текущего узла (или ввода). Перечисление NodeType определяет тип узла. В следующем примере кода отображается имя элемента и тип документа.

В этом примере атрибуты элемента игнорируются.

Проверьте атрибуты. Типы узлов элементы могут включать в себя список узлов атрибутов, которые им назначены. Метод MovetoNextAttribute перемещается по каждому атрибуту элемента по очереди. Используйте свойство HasAttributes, чтобы проверить, есть ли у узла какие-либо атрибуты. Свойство AttributeCount возвращает количество атрибутов для текущего узла.

Создайте и запустите проект.

Полный листинг кода

Пример вывода

Решение Проблема

При проверке кода вы можете увидеть следующее сообщение об ошибке исключения:

Необработанное исключение типа System.Xml. В system.xml.dll возникло исключение XmlException Дополнительные сведения: Неожиданное объявление XML. Объявление XML должно быть первым узлом документа, и пробелы перед ним не допускаются. Строка 1, позиция 4.

В следующей строке кода возникает ошибка исключения.

Читайте также:  Как открыть центр 2015

Источник

Подходы к извлечению веб-данных источник

В предыдущей статье мы обсудили основы технологии интеллектуального анализа данных. Сегодня мы более подробно рассмотрим веб-майнинг и подходы к извлечению данных из веб-источников.

Веб-майнинг — это процесс извлечения данных из веб-источников, который обычно имеет больше практических, чем теоретических компонентов. Основная цель Web Mining — сбор (анализ) данных с последующим хранением в необходимом формате. По сути, эта задача сводится к написанию HTML-парсеров, и об этом поговорим подробнее.

Существует несколько подходов к извлечению данных:

  1. Анализ дерева DOM с использованием XPath.
  2. Анализ строк.
  3. Использование регулярных выражений.
  4. Разбор XML.
  5. Зрительный фокус.

Рассмотрим все подходы подробнее.

Парсинг DOM-деревьев

Этот подход основан на разборе DOM-дерева. При таком подходе данные можно получить напрямую по идентификатору, имени или другим атрибутам элемента дерева (таким элементом может быть абзац, таблица, блок и т. д.). Кроме того, если элемент не помечен идентификатором, к нему можно получить доступ по одному пути вниз по дереву DOM, например:

body -> р[10] ->; а[1]-> связать текст

или выполнить итерацию по набору элементов одного типа, например:

body -> ссылки -> 5 элементов -> текст ссылки

Преимущества такого подхода:

  • вы можете получить данные любого типа и любого уровня сложности
  • когда вы знаете расположение элемента, вы может получить его значение, указав его путь

Недостатки этого подхода:

  • Различные движки HTML/JavaScript генерируют деревья DOM по-разному, поэтому вам нужно привязываться к конкретному движку
  • путь к элементу может меняться, поэтому такие синтаксические анализаторы обычно разрабатываются для быстрого сбора данных
  • Путь DOM может быть сложным и не всегда уникальным

Этот подход можно использовать в сочетании с пакетом Microsoft. библиотека mshtml, которая, по сути, . это основной элемент в Internet Explorer.

Data Extraction SDK использует файл Microsoft.mshtml для анализа дерева DOM, но для удобства это «плагин» поверх библиотеки:

UriHtmlProcessor proc = новый UriHtmlProcessor( новый Uri («http://habrahabr.ru/new/page1/» ));
proc.Initialize();

* Этот исходный код был выделен с помощью средства выделения исходного кода.

Следующим эволюционным шагом в анализе дерева DOM является использование XPath, т. е. путей, которые широко используются в разбор XML-данных. Суть этого подхода заключается в использовании простого синтаксиса для описания пути к элементу без необходимости перемещения вниз по дереву DOM. Этот подход использует известную библиотеку jQuery и библиотеку HtmlAgilityPack:

HTML Document doc = new HTML Document();
doc.Load(«file.htm»);
foreach (ссылка HtmlNode в doc.DocumentElement.SelectNodes( «//a[@href» ])
<
HtmlAttribute att = link[ «href» ];
att.Value = FixLink (att);
>
doc.Save(«file.htm»);

* Этот исходный код был выделен с помощью Source Highlighter .

Parse string

Несмотря на то, что такой подход нельзя использовать для написания серьезных парсеров, я немного расскажу о нем.

Иногда данные выводятся по какому-то шаблону (например, сотовый телефон feature table), где значения параметров стандартны, а меняются только их значения. В этом случае данные можно получить без разбора DOM-дерева, а с разбором строк, например Data Extraction SDK:

Компания: Microsoft
Штаб-квартира: Редмонд

» ;
строка company = data.GetHtmlString («Компания: » , «

«);
строка location = data.GetHtmlString(«Штаб c вводом: «, «

// вывод
// компания = «Майкрософт»
// местоположение = «Редмонт»

* Этот исходный код был выделен с помощью средства выделения исходного кода .

Использование набора методов для анализа строк иногда (чаще всего для простых шаблонов) более эффективно, чем анализ дерева DOM или XPath.

Читайте также:  Как открыть флешку на компьютере без форматирования если он ее не читает видит

Регулярные выражения и анализ XML

I Я видел много регулярных выражений с полным разбором HTML. Это в корне неверный подход, так как вы можете принести больше вреда, чем пользы.

Регулярные выражения следует использовать только для извлечения данных, имеющих строгий формат. : адреса электронной почты, номера телефонов и т. д. , в редких случаях адреса, данные шаблона.

Еще один неэффективный подход – рассматривать HTML как данные XML. Это связано с тем, что HTML редко бывает валидным, т. е. обрабатывается как XML. Библиотеки, которые реализовали этот подход, тратили больше времени на преобразование HTML в XML и последующий прямой анализ данных, поэтому лучше избегать этого подхода.

Визуальный подход

В настоящее время визуальный подход находится на ранней стадии разработки. Суть подхода в том, что пользователь может «настроить» систему на получение необходимых данных любой сложности и вложенности без использования языка программирования или API. Я уже писал о чем-то похожем (правда, применимом в другой области): методах парсинга веб-страниц на уровне информационных блоков. Я думаю, что будущие синтаксические анализаторы будут визуальными.

Общие вопросы и рекомендации

Проблемы с синтаксическим анализом HTML-данные: использование JavaScript/AJAX/асинхронных загрузок сильно усложняет написание синтаксических анализаторов; разные механизмы рендеринга HTML могут создавать разные деревья DOM (движки также могут иметь ошибки, которые впоследствии влияют на результаты синтаксического анализатора); большой объем данных требует написания распределённых парсеров, что влечет за собой дополнительные затраты на синхронизацию.

Невозможно выделить подход, применимый на 100% во всех случаях, поэтому современные библиотеки парсинга HTML-данных, как правило , комбинировать разные подходы. Например, HtmlAgilityPack позволяет анализировать дерево DOM (используя XPath), а недавно также поддерживает технологию Linq to XML. Data Extraction SDK использует синтаксический анализ дерева DOM, включает в себя набор дополнительных методов для синтаксического анализа строк, а также позволяет использовать технологию Linq для запросов Page DOM.

На сегодняшний день библиотека HtmlAgilityPack является абсолютным лидером в HTML-данных. . парсинг для дотнетеров, но для интереса можно посмотреть и другие библиотеки.

Источник

Как получить xml по URL

Рассмотрим получение данных в xml по сети. Допустим, на веб-сайте https://example.com есть файл users.xml со следующим содержимым:

Это означает, что сам файл доступен по адресу https://example.com/users.xml . Но это не обязательно должен быть файл, это может быть любой ресурс, динамически генерирующий данные в формате xml.

Возьмем стандартный проект Android и сначала определим в нем пользовательский класс, который будет представлять загружаемые данные. :

Затем определите класс UserXmlParser:

. В результате получается следующий проект:

Класс XmlPullParser, который уже обсуждался в предыдущем разделе, используется здесь для разбора xml. Единственное отличие состоит в том, что для создания объекта этого класса используется класс XmlPullParserFactory:

Чтобы он работал, давайте определим простейший визуальный интерфейс в файле activity_main.xml:

Здесь мы определить элемент TextView для отображения дополнительной информации о статусе загруженного файла, а элемент ListView определен для отображения загруженных объектов.

Затем измените класс MainActivity:

при создании MainActivity, будет запущен другой поток, который вызывает метод download(). Этот метод с помощью класса HttpsURLConnection загружает файл users.xml и возвращает его содержимое в виде строки (если вам нужно загрузить файл xml по протоколу http, то вместо класса HttpsURLConnection используется класс java.net.HttpURLConnection).

Полученный контент затем передается методу parse() класса UserXmlParser, который выводит список объектов.

Полученный список затем передается через ArrayAdapter в ListView, где оно отображается на экране устройства:

Напоследок нам нужно в файл AndroidManifest.xml добавить сетевые разрешения:

И после запуска приложения в окне Logcat мы увидим полученные данные с сервера:

Читайте также:  Как открыть свойства папки горячие клавиши

Источник

Работа с XML в PHP

Веб-скрапинг

Теперь мы научимся работать с XML. XML — это формат для обмена данными между веб-сайтами. Он очень похож на HTML, только XML позволяет использовать пользовательские теги и атрибуты.

Почему в анализе нам нужен XML? Иногда бывает так, что сайт, который нужно проанализировать, имеет API, позволяющий без особых усилий получить желаемое. Поэтому сразу совет: прежде чем анализировать сайт, проверьте, есть ли у него API.

Что такое API? Это набор функций, которые вы можете использовать для отправки запроса на эту страницу и получения желаемого ответа. Этот ответ обычно приходит в формате XML. Итак, приступим к его изучению.

Работа с XML в PHP

Допустим, у вас есть XML. Он может быть в виде строки, храниться в файле или возвращаться по запросу на определенный URL-адрес.

Пусть XML хранится в виде строки. В этом случае вам нужно создать объект из этой строки, используя new SimpleXMLElement :

Теперь у нас есть объект с проанализированным XML, хранящимся в переменной $xml . Получите доступ к свойствам этого объекта, чтобы получить доступ к содержимому тегов XML. Как именно — мы обсудим это ниже.

Если XML хранится в файле или предоставляется через URL (что является наиболее распространенным случаем), вам следует использовать функцию simplexml_load_file , который делает тот же объект $xml :

Как работать

В приведенных ниже примерах наш XML хранится в файле или URL-адресе.

Давайте предоставим следующий XML:

Давайте получим имя, возраст и зарплату сотрудника:

Как видите, объект $xml имеет свойства, соответствующие тегам.

Возможно, вы заметили, что тег нигде не виден при доступе. Это потому, что это корневой тег. Можно переименовать, например, в — и ничего не изменится:

В XML может быть только один корневой тег, как и в обычном HTML.

Давайте изменим наш XML:

В этом случае, получаем строку вызова:

Работа с атрибутами

Пусть некоторые данные будут храниться в атрибутах:

Теги дефиса

Теги дефиса (и атрибуты) разрешено в XML. В данном случае доступ к этим тегам осуществляется следующим образом:

Цикл

Теперь у нас не один воркер, а несколько. В этом случае мы можем выполнить итерацию по нашему объекту, используя foreach:

loop

Object to a normal field

Если вам неудобно работать с объектом, вы можете преобразовать его в обычное поле PHP со следующим советом:

Дополнительная информация

Анализ на основе Sitemap.xml

На сайте часто есть файл sitemap.xml. В этом файле хранятся ссылки на все страницы сайта для облегчения индексации поисковыми системами (индексация — это фактически анализ сайта Яндексом и Гуглом). нужно, главное, если есть, можно не заливать страницы сайта никакими мошенническими методами, а просто использовать этот файл.

Как проверить наличие из этого файла: проанализируем site.ru сайт, затем в браузере смотрим site.ru/sitemap.xml; если что-то видите, то оно есть, а если нет, то к сожалению.

Если есть карта сайта, то она содержит ссылки на все страницы сайта в формате XML. Смело берите этот XML, разбирайте его, отделяйте ссылки на нужные вам страницы чем угодно удобным для вас способом (например, проанализировав URL, который был описан в методе паука).

В результате вы получите список ссылок для анализа, все, что вам нужно сделать, это перейти к ним и проанализируйте нужный контент.

Узнайте больше об устройстве sitemap.xml в Википедии.

Что делать дальше:

Начните устранение неполадок по следующей ссылке: задачи к уроку.

Когда все решено, переходим к изучению новой темы.

Источник

Поделиться с друзьями
Решатор