Неполадка при разборе HTML-тега с помощью HTML Agility Pack C # - PullRequest
0 голосов
/ 23 марта 2011

Кажется, это должно быть легко сделать, но у меня есть некоторые серьезные проблемы с этим.Я пытаюсь разобрать определенный тег с помощью HAP.Я использую Firebug для поиска нужного мне XPath и придумываю // * [@ id = "atfResults"].Я полагаю, что моя проблема связана с тем, что "поскольку сигналы указывают начало и конец новой строки. Я попытался сделать ее литеральной строкой, но у меня есть ошибки. Я прикрепил функции

        public List<string> GetHtmlPage(string strURL)
    {
        // the html retrieved from the page

        WebResponse objResponse;
        WebRequest objRequest = System.Net.HttpWebRequest.Create(strURL);
        objResponse = objRequest.GetResponse();
        // the using keyword will automatically dispose the object 
        // once complete
        using (StreamReader sr =
        new StreamReader(objResponse.GetResponseStream()))
        {//*[@id="atfResults"]
            string strContent = sr.ReadToEnd();
            // Close and clean up the StreamReader
            sr.Close();
            /*Regex regex = new Regex("<body>((.|\n)*?)</body>", RegexOptions.IgnoreCase);

            //Here we apply our regular expression to our string using the 
            //Match object. 
            Match oM = regex.Match(strContent);
            Result = oM.Value;*/

            HtmlDocument doc = new HtmlDocument();
            doc.Load(new StringReader(strContent));
            HtmlNode root = doc.DocumentNode;
            List<string> itemTags = new List<string>();



            string listingtag = "//*[@id="atfResults"]";

            foreach (HtmlNode link in root.SelectNodes(listingtag))
            {
                string att = link.OuterHtml;

                itemTags.Add(att);
            }

            return itemTags;
        }

    }

Ответы [ 2 ]

1 голос
/ 23 марта 2011

Вы можете избежать этого:

string listingtag = "//*[@id=\"atfResults\"]";

Если вы хотите использовать необработанную строку, это будет:

string listingtag = @"//*[@id=""atfResults""]";

Как вы видите, необработанные строки здесь не приносят пользы.

Однако вместо этого вы можете использовать:

HtmlNode link = doc.GetElementById("atfResults");

Это также будет немного быстрее.

0 голосов
/ 23 марта 2011

Вы пробовали это:

  string listingtag = "//*[@id='atfResults']";
...