首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Html敏捷包SelectSingleNode在迭代中总是得到相同的结果?

Html敏捷包SelectSingleNode在迭代中总是得到相同的结果?
EN

Stack Overflow用户
提问于 2013-03-03 19:58:47
回答 1查看 10.4K关注 0票数 18

我想要集合中的节点,但是通过迭代SelectSingleNode,我总是得到相同的对象,只是node.Id在改变……我尝试的是读取给定站点的webresponse,并捕获一些信息,如值、链接。在特殊定义的元素中。

代码语言:javascript
复制
int offSet = 0;
string address = "http://www.testsite.de/ergebnisliste.html?offset=" + offSet;

HtmlWeb web = new HtmlWeb();
//web.OverrideEncoding = Encoding.UTF8;
HtmlDocument doc = web.Load(address);

HtmlNodeCollection collection = doc.DocumentNode.SelectNodes("//div[@itemtype='http://schema.org/Posting']");

foreach (HtmlNode node in collection) {
    string id = HttpUtility.HtmlDecode(node.Id);
    string cpname = HttpUtility.HtmlDecode(node.SelectSingleNode("//span[@itemprop='name']").InnerText);
    string cptitle = HttpUtility.HtmlDecode(node.SelectSingleNode("//span[@itemprop='title']").InnerText);
    string cpaddress = HttpUtility.HtmlDecode(node.SelectSingleNode("//span[@itemprop='addressLocality']").InnerText);
    string date = HttpUtility.HtmlDecode(node.SelectSingleNode("//div[@itemprop='datePosted']").InnerText);
    string link = "http://www.testsite.de" + HttpUtility.HtmlDecode(node.SelectSingleNode("//div[@class='h3 title']//a[@href]").GetAttributeValue("href", "default"));               
}

以下是1次迭代的示例:

代码语言:javascript
复制
<div id="66666" itemtype="http://schema.org/Posting">   
<div>
    <a>
        <img />
    </a>
</div>
<div>
    <div class="h3 title">
        <a href="/test.html"  title="Test">
            <span itemprop="title">Test</span>
        </a>
    </div>
    <div>
        <span itemprop="name">TestName</span>       
    </div>
</div>
<div>
    <div>
        <div>
            <div>
                <span itemprop="address">Test</span>
            </div>
            <span>                     
                <a>
                    <span><!-- --></span>
                    <span></span>
                </a>
            </span>         
        </div>
    </div>      
    <div itemprop="date">
        <time datetime="2013-03-01">01.03.13</time>
    </div>
</div>

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-03 20:43:45

通过写作

node.SelectSingleNode("//span[@itemprop='name']").InnerText

就像你在写

doc.DocumentNode.SelectSingleNode("//span[@itemprop='name']").InnerText

要做你想做的事情,你应该这样写它:node.SelectSingleNode(".//span[@itemprop='name']").InnerText

这个.点/句点告诉我们在当前节点上进行搜索,该节点是node,而不是doc

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15185404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档