왜 HtmlAgilityPack을 대체 할 수 있습니까?

c# html-agility-pack

문제

" http://cnblogs.com "페이지를 요청하는 기능을 구현합니다.
더 많은 HtmlNode를 대체하기 위해 HtmlAgilityPack을 사용할 때 어떤 일이 혼란 스러울 때 ----- 대체 할 수 없습니다.

코드는 다음과 같습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
using HtmlAgilityPack;//I Use NuGet to include HtmlAgilityPack(Vs2012)

namespace CatchWebSample
{
    class Program
    {
        public static void Main(string[] args)
        {
            HtmlDocument document = new HtmlDocument();
            WebClient wc = new WebClient();
            wc.Encoding = Encoding.GetEncoding("utf-8");
            string content = wc.DownloadString("http://cnblogs.com");
            document.LoadHtml(content);
            string oldContent = document.DocumentNode.OuterHtml;

            //here, I want to replace all xpath= //div[@class='post_item_foot'] htmlnodes
            HtmlNodeCollection targetNodeCollection = document.DocumentNode.SelectNodes(@"//div[@class='post_item_foot']");

            HtmlNode newHtmlNode;
            if (targetNodeCollection != null && targetNodeCollection.Count > 0)
            {
                for (int i = 0; i < targetNodeCollection.Count; i++)
                {
                    var targetNode = targetNodeCollection[i];
                    newHtmlNode = document.CreateElement("span");
                    newHtmlNode.InnerHtml = HtmlDocument.HtmlEncode("###### REPLACED CONTENT #########");

                    targetNode.ParentNode.ReplaceChild(newHtmlNode, targetNode);
                }

                content = document.DocumentNode.OuterHtml;

                //but the result is same of the original data,why it can not replace ?
                bool flag = string.Compare(oldContent, content) == 0;
            }

        }
    }
}

나는 너무 혼란스럽고 왜?

인기 답변

replaceChild (), insertAfter () 갑자기 둘 다 나를 위해 일하는 것을 멈췄다.

내 최고의 대안은 innerhtml을 "new html string"으로 대체하는 것이 었습니다.

targetnode.innerhtml = newNodeAsString;

편집하다:

HtmlAgilityPack 에 값 / 노드를 삽입 할 때 버그가 있었습니다 . 일부 캐싱 때문에 더 빨리 작동합니다.

내가 왜 버렸어. AngleSharp를 사용했습니다.

편집하다:

2017 년 중반에 HAP 가 개발되고 있습니다 . 나는 돌아 가지 않을거야. 또한 HAP에서 문제를 제기 할 수 없습니다.




아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.