Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# htmlagilitypack c中的li#_C#_Asp.net_Html Agility Pack - Fatal编程技术网

C# htmlagilitypack c中的li#

C# htmlagilitypack c中的li#,c#,asp.net,html-agility-pack,C#,Asp.net,Html Agility Pack,我想从下面的li中获得标签和强值 <div class="property-summary"> <h3>Listing summary</h3> <ul> <li> <label>Reference</label> <strong>BR-S-4301</strong> </li>

我想从下面的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>
现在如何得到它?下面的内容不适合我

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

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

IEnumerable<HtmlNode> labels = dataNode.Descendants("label");
您还可以使用:

var dataNode = doc.DocumentNode.SelectNodes("//div[normalize-space(@class)='property-summary']")[0];
HtmlNodeCollection strongs = dataNode.SelectNodes(".//li/strong");
HtmlNodeCollection labels = dataNode.SelectNodes(".//li/label");
要从strong或标签获取文本,请使用:

foreach (var strong in strongs)
{
    string strongText = strong.InnerText.Trim();
}

有两种方法可以做到这一点

1. 2.

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

< p>您可以考虑切换到这些HTML解析库,这些库提供了类似特性的优秀jQuery选择器。


它会给我li值吗?或者只有一个..我们不应该有循环?它将返回“属性摘要”部分中的所有标签/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();
}
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());
}
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());
}