Avatar billede wedia Nybegynder
18. november 2010 - 08:04 Der er 4 kommentarer og
1 løsning

Problem med Html Agility pack og nullReferenceException

Hej eksperten!

jeg har et lille problem jeg har denne kode :

foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//a[@href]"))
        {
            HtmlAttribute href = link.Attributes["href"];
            HtmlAttribute title = link.Attributes["title"];

            if (String.IsNullOrEmpty(title.Value) == false)
            {
                list += href.Value + " | " + title.Value + "<br />";
                t++;
            }
            else
            {
                list += href.Value + "<br />";
            }

         

            x++;
        }

og den virker fint hvis HtmlAttribute title inde holder noget men hvis de enkelte links ikke har en title attribute så får jeg en nullReferenceException, jeg går ud fra at der er fordi at HtmlAttribute title er tom men hvordan kan jeg lave et tjek på denne ??
Avatar billede wedia Nybegynder
18. november 2010 - 08:21 #1
Jeg har og så prøvet med :

HtmlAttribute title = link.Attributes["title"];
if (String.IsNullOrEmpty(title.ToString()) == false)
            {   
                list += href.Value + " | " + title.Value + "<br />";
                t++;
            }
            else
            {
                list += aText + " | " +  href.Value + "<br />";
          }

og også med :


if (String.IsNullOrEmpty(link.Attributes["title"].ToString()) == false)
            {    HtmlAttribute title = link.Attributes["title"];
                list += href.Value + " | " + title.Value + "<br />";
                t++;
            }
            else
            {
                list += aText + " | " +  href.Value + "<br />";
          }

men i begge tilfælde får jeg "System.NullReferenceException: Object reference not set to an instance of an object" fejlen linjen "if (String.IsNullOrEmpty(link.Attributes["title"].ToString())" ??
Avatar billede keysersoze Guru
18. november 2010 - 09:30 #2
du kan ikke tage hverken value eller tostring på noget der er null - så du if skal nok være;

HtmlAttribute title = link.Attributes["title"];
if (title != null)
Avatar billede Syska Mester
18. november 2010 - 09:34 #3
Du bliver nød til at tjekke om "title" findes.

eventuelt kan du gøre sådan her:
var title = (link.Attributes["title"] ?? "").ToString();
if(string.IsNullOrEmpty(title))
Avatar billede wedia Nybegynder
19. november 2010 - 12:11 #4
Hey Keysersoze,
Det virket smid et svar!
Avatar billede keysersoze Guru
19. november 2010 - 17:59 #5
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester