Я столкнулся с проблемой с атрибутом src для изображений при разборе html-документа с использованием HAP.Если значение атрибута src является длинным URL с параметром, например: <img border='0' title='Kommunelogo' alt='Kommunelogo' style='margin-top: 5px;' src='http://livskraftig.bedrekommune.no/more/reports/profilechart.jsp?legend=Y&graphtype=xy&profileid=19433213274429306&element=72&addyears=true' />
<img border='0' title='Kommunelogo' alt='Kommunelogo' style='margin-top: 5px;' src='http://livskraftig.bedrekommune.no/more/reports/profilechart.jsp?legend=Y&graphtype=xy&profileid=19433213274429306&element=72&addyears=true' />
, то HAP анализирует изображение следующим образом: <img border='0' title='Kommunelogo' alt='Kommunelogo' style='margin-top: 5px;' src='http://livskraftig.bedrekommune.no/more/reports/profilechart.jsp?legend="Y"&amp;graphtype="xy"&amp;profileid="19433213274429306"&amp;element="72"&amp;addyears="tru"e'/>
<img border='0' title='Kommunelogo' alt='Kommunelogo' style='margin-top: 5px;' src='http://livskraftig.bedrekommune.no/more/reports/profilechart.jsp?legend="Y"&amp;graphtype="xy"&amp;profileid="19433213274429306"&amp;element="72"&amp;addyears="tru"e'/>
Похоже, что HAP разделяет параметры, думая, что ониявляются атрибутами.
Мой код:
HtmlDocument doc = new HtmlDocument(); doc.OptionOutputAsXml = true; doc.OptionAutoCloseOnEnd = true; doc.OptionFixNestedTags = true; doc.LoadHtml(input_which_is_a_whole_html_file); HtmlAgilityPack.HtmlNodeCollection imageNodes = doc.DocumentNode.SelectNodes("//img"); if (imageNodes != null) { foreach (HtmlAgilityPack.HtmlNode imgNode in imageNodes) { string imgSrc = imgNode.Attributes["src"].Value; } }
Есть идеи, как мне этого избежать?
Большое спасибо!
Ваш код, вероятно, делает что-то странное, потому что следующее работает нормально:
HtmlDocument doc = new HtmlDocument(); doc.LoadHtml("<img border='0' title='Kommunelogo' alt='Kommunelogo' style='margin-top: 5px;' src='http://livskraftig.bedrekommune.no/more/reports/profilechart.jsp?legend=Y&graphtype=xy&profileid=19433213274429306&element=72&addyears=true' />"); doc.Save(Console.Out);
У тебя есть репро?