0

我想从以下 li 中获取标签和强值

<div class="property-summary">
    <h3>Listing summary</h3>
    <ul>
        <li>
            <label>Reference</label>
            <strong>BR-S-4301</strong>
        </li>

        <li>
            <label>Type</label>
            <strong>Apartment</strong>
        </li>

        <li>
            <label>City</label>
            <strong>Dubai</strong>
        </li>

        <li>
            <label>Community</label>
            <strong>Palm Jumeirah</strong>
        </li>

        <li>
            <label>Subcommunity</label>
            <strong>Tiara Residences</strong>
        </li>
    </ul>
</div>

这是我的 C# 代码

 var dataNode = rootNode.SelectNodes("//div[normalize-space(@class)='property-summary']");

现在如何获得?下面不适合我

 var Node = dataNode .SelectSingleNode(".//li/strong");
4

3 回答 3

1

有几种方法可以做到这一点。

1

var labelNodes = doc.DocumentNode.SelectNodes("//div[normalize-space(@class)='property-summary']/ul/li/label");
var strongNodes = doc.DocumentNode.SelectNodes("//div[normalize-space(@class)='property-summary']/ul/li/strong");

foreach (var node in labelNodes)
{
    Debug.WriteLine(node.InnerText.Trim());
}
foreach (var node in strongNodes)
{
    Debug.WriteLine(node.InnerText.Trim());
}

2

var liNodes = doc.DocumentNode.SelectNodes("//div[normalize-space(@class)='property-summary']/ul/li");

foreach (var node in liNodes)
{
    Debug.WriteLine(node.SelectSingleNode("label").InnerText.Trim());
    Debug.WriteLine(node.SelectSingleNode("strong").InnerText.Trim());
}

在编写任何实际代码之前检查节点是否存在。

于 2013-07-08T11:06:12.603 回答
0

如果要获取所有label标签,可以使用

IEnumerable<HtmlNode> labels = dataNode.Descendants("label");

strong标签也一样

IEnumerable<HtmlNode> strongs = dataNode.Descendants("strong");

您还可以使用:

var dataNode = doc.DocumentNode.SelectNodes("//div[normalize-space(@class)='property-summary']")[0];
HtmlNodeCollection strongs = dataNode.SelectNodes(".//li/strong");
HtmlNodeCollection labels = dataNode.SelectNodes(".//li/label");

要从强项或标签中获取文本,请使用:

foreach (var strong in strongs)
{
    string strongText = strong.InnerText.Trim();
}
于 2013-07-08T10:54:57.793 回答
0

您可以考虑切换到这些 HTML 解析库,它们提供了出色的 jQuery 选择器等特性。

http://nsoup.codeplex.com/

http://github.com/jamietre/csquery

于 2013-07-08T11:59:26.280 回答