HTMLAgilityPack Selectnodes gibt immer null zurück

.net c# html html-agility-pack

Frage

Ich habe gute Dinge über die HTMLAgilityPack-Bibliothek gehört, also dachte ich, ich würde es versuchen, aber ich hatte absolut keinen Erfolg damit. Ich habe seit Monaten versucht, das herauszufinden. Egal, was ich mache, ich kann diesen Code nicht dazu bringen, mir etwas anderes als null zu geben. Ich habe versucht, diesem Beispiel zu folgen ( http://www.c-sharpcorner.com/uploadfile/9b86d4/getting-started-with-html-agility-pack/ ), aber ich bekomme nicht die gleichen Ergebnisse und ich kann nicht erklären warum.

Ich versuche, die Datei zu laden und SelectNodes auszuführen, um alle Hyperlinks auszuwählen, aber es gibt immer eine leere Liste zurück. Ich habe versucht, alle Arten von Knoten (divs, p, a, alles und alles) auszuwählen und es gibt immer eine leere Liste zurück. Ich habe versucht, doc.Descendants zu verwenden, habe versucht, verschiedene Quelldateien lokal und im Web zu verwenden, und nichts, was ich tue, wird jemals ein tatsächliches Ergebnis zurückgeben.

Ich muss etwas Wichtiges übersehen haben, aber ich kann nicht herausfinden, was es ist. Was könnte ich vermissen?

Code:

    public string GetSource()
    {
        try
        {
            string result = "";

            HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
            if (!System.IO.File.Exists("htmldoc.html"))
                throw new Exception("Unable to load doc");

            doc.LoadHtml("htmldoc.html");   // copied locally to bin folder, confirmed it found the file and loaded it

            HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes("//a");  // Always returns null, regardless of what I put in here

            if (nodes != null)  
            {
                foreach (HtmlNode item in nodes)
                {
                    result += item.InnerText;
                }
            }
            else
            {
                // Every. Single. Time.
                throw new Exception("No matching nodes found in document");
            }


            return result;
        }
        catch (Exception ex)
        {                
            return ex.ToString();
        }
    }

Die Quell-HTML-Datei 'htmldoc.html', die ich verwende, sieht so aus:

<html>  
<head>  
    <title>Testing HTML Agility Pack</title>
</head>  
<body>  
    <div id="div1">  
        <a href="div1-a1">Link 1 inside div1</a>  
        <a href="div1-a2">Link 2 inside div1</a>  
    </div>  
        <a href="a3">Link 3 outside all divs</a>      
        <div id="div2">  
        <a href="div2-a1">Link 1 inside div2</a>  
        <a href="div2-a2">Link 2 inside div2</a>  
    </div>  
</body>  
</html>

Akzeptierte Antwort

Um eine Datei zu laden, sollten Sie Load Methode verwenden. LoadHtml wird für Strings verwendet, die HTML enthalten

doc.Load("htmldoc.html"); 



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum