1

私はこのコードを持っています

Category featured = new Category()
            {
                active = true,
                Categories = new Category[0],
                description = "",
                identifier = "featured",
                name = "Featured",
                Products = new Product[0],
                url = siteUrl,
            };
StatisticCounters.CategoriesCounter();

次に、この下にこのコードがあります。

private IList<Category> FeatureSubCategories(HtmlNode std, Category category,Category featured)
{
    List<Category> categories = new List<Category>();
    {
        if (category.name == "Featured")
        {
            var nodes = std.SelectNodes("//span[contains(@class,'widget')] [position() <= 4]"); //TODO

            foreach (var node in nodes)
            {
                string name = SiteParserUtilities.ParserUtilities.CleanText(System.Net.WebUtility.HtmlDecode(node.InnerText));
                string url = node.Attributes["href"].Value;
                string identifier = url.Split('/').Last().Replace(".html", "");
                WriteQueue.write(string.Format(" Category [{0}].. {1} ", name, url));

                IList<Category> sub = GetSubCategories(std);
                Category c = new Category()
                {
                    active = true,
                    Categories = sub.ToArray(),
                    description = "",
                    identifier = identifier,
                    name = name,
                    Products = new Product[0],
                    url = url,
                };
                StatisticCounters.CategoriesCounter();
                categories.Add(c);
            }
        }
    }
    return categories;
}

なんらかの理由で、コードを実行すると if ステートメントif (category.name == "Featured")が呼び出されず、その理由がわかりません。xpath の解析を開始し、それらのリンクを配列に格納します。あなたが与えることができるどんな助けにも感謝します。

4

1 に答える 1

-2

デバッガーでチェックインすることをお勧めします。空白が問題を引き起こす場合があります。多くのプログラマーが犯す単純な間違いです。データベースからデータを取得する際、先頭にスペースが入る場合があります。何らかの値と比較すると (先頭にスペースがないと考えて)、それらのスペースをトリミングしないと比較されません。例えば

string s1 = "TEST"; 
string s2 = " TEST"; 
if (s1 == s2) { 
    Console.WriteLine("Equal"); 
}

トリム機能を使用して空白を削除し、比較してください。

于 2013-03-26T09:47:39.150 に答える