我正在寻找网页上的特定项目。我所做的(到目前为止测试)工作正常,但在我看来真的很难看。我想获得以更简洁的方式执行此操作的建议,即现在是一个 Linq 查询而不是 2 个....
document.GetXDocument();
string xmlns = "{http://www.w3.org/1999/xhtml}";
var AllElements = from AnyElement in document.fullPage.Descendants(xmlns + "div")
where AnyElement.Attribute("id") != null && AnyElement.Attribute("id").Value == "maincolumn"
select AnyElement;
// this first query bring only one LARGE Element.
XDocument subdocument = new XDocument(AllElements);
var myElements = from item in subdocument.Descendants(xmlns + "img")
where String.IsNullOrEmpty(item.Attribute("src").Value.Trim()) != true
select item;
foreach (var element in myElements)
{
Console.WriteLine(element.Attribute("src").Value.Trim());
}
Assert.IsNotNull(myElements.Count());
我知道我可以直接查找“img”,但我希望能够在这些页面中获取其他类型的项目,例如链接和一些文本。
我强烈怀疑这是最好的方法!
同一个查询逻辑:
var myElements = from element in document.fullPage.Descendants(xmlns + "div")
where element.Attribute("id") != null
&& element.Attribute("id").Value == "maincolumn"
from item in new XDocument(element).Descendants(xmlns + "img")
where !String.IsNullOrEmpty(item.Attribute("src").Value.Trim())
select item;
我是一名优秀的程序员,十分优秀!