#c#
#c#
Вопрос:
В настоящее время я работаю над системой управления запасами со штрих-кодами. Я нашел веб-сайт, с которого я могу получить информацию о штрих-коде, она хранится в href. Вот пример того, как это выглядит:
<a href="/ean/BarcodeNumber" target="_blank">ItemName</a>
Что мне нужно сделать, это получить имя элемента, сохранить его в строку, чтобы затем я мог обновить метку. Основная проблема, с которой у меня возникают проблемы, — это доступ к определенным HTML-тегам в моем коде.
Есть ли простой способ получить «ItemName» из тега?
Спасибо
Комментарии:
1. Пожалуйста, опубликуйте свой текущий код и определите, что означает «наличие проблем».
2. Вам нужен анализатор DOM.
3. вы знакомы с xpath? вы можете прочитать HTML с помощью чего-то вроде html-agility-pack, а затем повторно получить элемент, используя xpath, который указывает на этот a-тег
4. Во-вторых, используя пакет HTML Agility pack, похоже, что вы удаляете веб-сайт для получения информации, HTMLAP позволит вам сканировать весь веб-сайт и выбирать определенные HTML-теги на основе простых фильтров.
5. Если ваши запросы просты (или средне-простые :), вы также можете просто использовать класс WebBrowser, который вернет вам
HtmlDocument
объект. Затем вы можете использовать стандартные инструменты для извлечения необходимых вам значений. Например.,[HtmlDocument].GetElementsByTagName("A").OfType<HtmlElement>().Where(elm => elm.GetAttribute("href").Contains("BarcodeNumber"));
Ответ №1:
Я могу порекомендовать пакет гибкого управления Html через NuGet:
простой пример с XPath:
var html =
@"<html>
<head>
<title></title>
</head>
<body>
<a href=""/ean/BarcodeNumber"">My Link Text</a>
</body>
</html>";
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
string name = htmlDoc.DocumentNode
.SelectSingleNode("//html/body/a[@href='/ean/BarcodeNumber']")
.InnerText;
Комментарии:
1. Спасибо вам за это! Есть ли в любом случае, что я могу заставить его также отображать имя элемента? Поскольку в настоящее время выше отображается только «Мой текст ссылки» и никогда не используется Html Agility Pack, я понятия не имею, как я буду получать фактическое название элемента. Я не сказал, но это для веб-сайта, поэтому, полагаю, я бы тоже изменил html-URL веб-сайта, поскольку я только что понял, что в настоящее время он сохраняет html в переменной, не получая веб-сайт! Дух!
2. @KevinGorman Я думаю, что я не понимаю, что вы на самом деле имеете в виду. У вас нет HTML, доступного в вашем коде, или вам нужна помощь для получения html какого-либо веб-сайта? Если да, пожалуйста, задайте другой вопрос по этой конкретной проблеме. В любом случае было бы очень полезно, если бы вы предоставили больше контекста и информации в своем вопросе.
3. Извините, я начну снова. Я нашел веб-сайт, который предлагает информацию о штрих-коде, мне тоже нужны URL-адреса доступа (/?q = Barcode), на этой странице есть тег hred, из которого мне нужно получить внутренний HTML-код, <a href=»/ean /Barcode» target=»_blank»>ItemName</a> (Xpath: /html/body/div[2]/p[3]/b / a). Что мне нужно, так это способ для c # получить itemname из любого URL, который я ему даю. Все URL-адреса одинаковы, просто разные номера штрих-кодов и названия элементов. Создать URL-адрес не составит труда, просто я не знаю, как получить доступ к внутреннему тексту html a href. Итак, все, что я хочу, это MessageBox. Показать(имя_элемента);
4. Это именно то, что показано в примере. Вы можете использовать HtmlAgiltyPack с приведенным выше кодом, чтобы получить внутренний текст ссылки. Посмотрите на этот пример на .NET Fiddle, чтобы увидеть HtmlAgilityPack в действии