Я хочу проанализировать html-страницу, чтобы получить некоторые данные. Сначала я конвертирую его в XML-документ с помощью SgmlReader . Затем я загружаю результат в XMLDocument и затем просматриваю XPath:
//contains html document
var loadedFile = LoadWebPage();
...
Sgml.SgmlReader sgmlReader = new Sgml.SgmlReader();
sgmlReader.DocType = "HTML";
sgmlReader.WhitespaceHandling = WhitespaceHandling.All;
sgmlReader.CaseFolding = Sgml.CaseFolding.ToLower;
sgmlReader.InputStream = new StringReader(loadedFile);
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.XmlResolver = null;
doc.Load(sgmlReader);
Этот код отлично работает в большинстве случаев, кроме этого сайта - www.arrow.com (попробуйте найти что-то вроде OP295GS). Я могу получить таблицу с результатом, используя следующий XPath:
var node = doc.SelectSingleNode(".//*[@id='results-table']");
Это дает мне узел с несколькими дочерними узлами:
[0] {Element, Name="thead"}
[1] {Element, Name="tbody"}
[2] {Element, Name="tbody"}
FirstChild {Element, Name="thead"}
Хорошо, давайте попробуем получить некоторые дочерние узлы с помощью XPath. Но это не работает:
var childNodes = node.SelectNodes("tbody");
//childnodes.Count = 0
Это также:
var childNode = node.SelectSingleNode("thead");
// childNode = null
И даже это:
var childNode = doc.SelectSingleNode(".//*[@id='results-table']/thead")
Что может быть не так в запросах Xpath?
Я только что попытался разобрать эту HTML-страницу с помощью Html Agility Pack , и мои запросы XPath работают хорошо. Но мое приложение использует внутри XmlDocument, Html Agility Pack мне не подходит.
Я даже попробовал следующий трюк с Html Agility Pack , но запросы Xpath также не работают :
//let's parse and convert HTML document using HTML Agility Pack and then load
//the result to XmlDocument
HtmlDocument xmlDocument = new HtmlDocument();
xmlDocument.OptionOutputAsXml = true;
xmlDocument.Load(new StringReader(webPage));
XmlDocument document = new XmlDocument();
document.LoadXml(xmlDocument.DocumentNode.InnerHtml);
Возможно, Чтобы прояснить этот вопрос и снова открыть его, посетите справочный центр .
Я нахожусь на начальных этапах разработки виджета, и возник вопрос дизайна, что более выгодно - использовать его как IFrame или использовать другую технологию .
Кто-нибудь раньше создавал виджеты для встраивания в другие сайты? Что лучше всего было их спроектировать / спроектировать? Есть какие-нибудь хорошие практики?
Спасибо,
Кто-нибудь раньше создавал виджеты для встраивания в другие сайты? Что лучше всего было их спроектировать / спроектировать? Есть какие-нибудь хорошие практики?
Спасибо,
Кто-нибудь раньше создавал виджеты для встраивания в другие сайты? Что лучше всего было их спроектировать / спроектировать? Есть какие-нибудь хорошие практики?
Спасибо, Alex