Как прочитать дочерний элемент" strong " пролета? С#
Привет Ребята,
Я пытаюсь прочитать дочерний элемент" сильный " пролета. Я хочу затем преобразовать его в строку.
поэтому в данном случае я пытаюсь прочитать "сильное" значение, которое является числом 4.
У кого-нибудь есть идеи, как я могу этого добиться, пожалуйста.
Вот копия HTML-страницы для справки.
Показывает: наиболее удивительных изображений в Интернете[^]
Заранее спасибо
Что я уже пробовал:
Я уже пробовал искать на различных форумах, включая этот, но безуспешно.
Код у меня есть до сих пор
HtmlElementCollection allelements = _webBrowser.Document.All; foreach (HtmlElement webpageelement in allelements) { if ((webpageelement.GetAttribute("span") == "4")) { MessageBox.Show(“Show”); } }
с тех пор как я узнал из того, что было сказано до сих пор в этой теме, у меня есть это.
HtmlElementCollection theElementCollection = default(HtmlElementCollection); theElementCollection = webBrowser1.Document.GetElementsByTagName("div"); foreach (HtmlElement curElement in theElementCollection) { if (curElement.GetAttribute("className").ToString() == "ng-scope") { HtmlElementCollection childDivs = curElement.Children.GetElementsByName("strong"); foreach (HtmlElement childElement in childDivs) { MessageBox.Show(childElement.InnerText); } } }
[no name]
"пробовал смотреть на различных форумах, включая этот, и не повезло", вам может повезти больше, если вы попытаетесь на самом деле написать какой-то код.
Member 9665875
у меня есть спасибо, я просто не включил его
[no name]
Вы также не смогли описать проблему.
F-ES Sitecore
Ваш код проходит через все элементы и находит один с атрибутом span равным 4, поэтому вы ищете что-то вроде
& lt;blah span= "4">
Это совсем не похоже на ваш пример html. Вместо того чтобы проходить через все элементы, используйте GetElementsByTagName, чтобы получить все элементы "span", а затем для каждого промежутка посмотрите на дочерние элементы, чтобы увидеть, есть ли дочерний элемент с тегом "strong" , и если да, то получите внутренний текст этого элемента
https://msdn.microsoft.com/en-us/library/system.windows.forms.htmlelement.children(v=против 110). aspx
Member 9665875
Спасибо за Ваш быстрый ответ, не могли бы вы помочь мне дальше, пожалуйста, у меня есть это в настоящее время, где я иду не так, пожалуйста?
HtmlElementCollection theElementCollection = по умолчанию(HtmlElementCollection);
theElementCollection = метода webbrowser1.Документ.GetElementsByTagName ("div");
по каждому элементу (curElement объекта HTMLElement в theElementCollection)
{
если (вылечить).GetAttribute ("имя класса").ToString() == "ng-scope")
{
HtmlElementCollection childDivs = curElement.Дети.GetElementsByName ("сильный");
по каждому элементу (childElement объекта HTMLElement в childDivs)
{
Ящик для сообщений.Показать (childElement.Через свойство innerText);
}
}
}
Robert Welliever
Почему это не работает? Разве вы просто не проверяете, имеет ли childElement внутренний текст, равный 4? Так что замените:
Ящик для сообщений.Показать (childElement.Через свойство innerText)
с:
if (childElement.InnerText = = "4") {//сделай что-нибудь }.
Или вы могли бы просто заменить:
если (вылечить).GetAttribute ("имя класса").ToString() == "ng-scope") { ... }
с:
если (вылечить).GetAttribute ("имя класса").ToString() == "ng-scope" & & amp; curElement.Возвращение null.InnerText == "4") {//сделай что-нибудь }
что будет работать, если промежуток внутри элемента "ng-scope" инвариантен.
F-ES Sitecore
Проверьте мое опубликованное решение