为什么这个HtmlAgilityPack动作在确实有匹配元素的情况下不起作用?我得到“InvalidOperationException>Message=Sequencedoesnotcontainmatchingelements”,代码如下:}//此代码改编自KirkWoll在http://stackoverflow.com/questions/4752840/html-agility-pack-c-sharp-paragraph-parsing-problem的回答publicListGetParagraphsListFromHtml(stringsourceHtml){varpars=new列表();HtmlAgilityPack.HtmlDocumentdoc=newHtmlAgilityPack.HtmlDocument();doc.LoadHtml(sourceHtml);foreach(varparindoc.DocumentNode.DescendantNodes().Single(x=>x.Id=="body").DescendantNodes().Where(x=>x.Name=="p"))//.其中(x=>x.Name=="h1"||x.Name=="h2"||x.Name=="h3"||x.Name=="hp"||))<--这是我真正想做的,但我不知道这是否可能,或者如果可能的话,语法是否正确{pars.Add(par.InnerText);}//测试foreach(pars中的字符串s){MessageBox.Show(s);}返回标准;为什么代码找不到段落?我真的很想找到所有文本(h1..3或更高的值),但这是一个开始顺便说一句:我正在测试的html文件确实有一些段落元素。UPDATE为了回复Amy的隐含请求,并且为了完成完全公开/最终照片,这里是整个测试html文件:body{background-color:orange;字体系列:Verdana,无衬线体;}h1{颜色:蓝色;font-family:'SegoeUI',Verdana,sans-serif;}h2{颜色:白色;font-family:'PalatinoLinotype','Palatino',sans-serif;}h3{显示:内联块;}在经典文学双语版本的翻译中找到联系人:在JulesVerne的TranslationAroundtheWorldin80Days中找到(法语和英语并排)平装本Kindle格列佛游记乔纳森·斯威夫特(JonathanSwift)(英语和法语并排)平装本Kindle儒勒·凡尔纳(JulesVerne)的《地心之旅》(法语和英语并排)平装本罗伯特·路易斯·史蒂文森(RobertLouisStevenson)着的《金银岛》(英语和芬兰语并排)平装本KindleDonQuixotebyMigueldeCervantesSaavedra(西班牙语和英语并排)平装本第一卷第二卷第三卷Kindle第一卷第二卷第三卷刘易斯卡罗尔的爱丽丝梦游仙境(英语和德语并排)即将推出;现在,请参阅:LewisCarroll的平装Kindle爱丽丝梦游仙境(英语和意大利语并排)即将推出;现在,请参阅:平装本Kindle其他网站:美国Map-O-Rama获奖电影、书籍和音乐GarrapataStateParkinBigSurThroughouttheSeasons更新2这个有效(尽管它是“实时”网页,而不是保存到磁盘的html文件):publicListGetParagraphsListFromHtml(stringsourceHtml){varpars=newList();HtmlAgilityPack.HtmlDocumentdoc=newHtmlAgilityPack.HtmlDocument();doc.LoadHtml(sourceHtml);vargetHtmlWeb=newHtmlWeb();vardocument=getHtmlWeb.Load("http://www.montereycountyweekly.com/opinion/letters/article_e333a222-942d-11e3-ba9c-001a4bcf6878.html");//http://www.bigsurgarrapata.com/只返回了一段//http://usamaporama.azurewebsites.net/<--无//http://www.awardwinnersonly.com/<-与bigsurgarrapata相同varpTags=document.DocumentNode.SelectNodes("//p");int计数器=1;if(pTags!=null){foreach(varpTaginpTags){pars.Add(pTag.InnerText);MessageBox.Show(pTag.InnerText);计数器++;}}MessageBox.Show("完成!");返回标准;;不完整,但是这个受这个答案启发的已经足够让我们入门了:以上是C#学习教程:为什么这个HtmlAgilityPack操作在确实有匹配元素的情况下不起作用?如果分享的内容对你有用,需要进一步了解C#学习教程,希望你多多关注——HtmlAgilityPack.HtmlDocumenthtmlDoc=newHtmlAgilityPack.HtmlDocument();//有多种选择,根据需要设置htmlDoc.OptionFixNestedTags=true;htmlDoc.Load(@"C:Platypusdplatypus.htm");if(htmlDoc.DocumentNode!=null){IEnumerabletextNodes=htmlDoc.DocumentNode.SelectNodes("//text()");foreach(HtmlNodenodeintextNodes){if(!string.IsNullOrWhiteSpace(node.InnerText)){MessageBox.Show(node.InnerText);}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
