HtmlAgilityPack에서 HtmlNode 복제?

c# html-agility-pack xpath

문제

HTML Agility Pack을 사용하여 동일한 페이지에서 두 가지 작업을 수행합니다.
첫 번째 경우 스크립트, 스타일 등과 같은 요소를 제거해야합니다. 그러나 두 번째 요소는 모든 요소를 ​​유지해야합니다.

이후 첫 번째 부분 전에 두 번째 부분을 할 수 없기 때문에 먼저 두 번째 부분의 요소를 모두 저장할 수 있도록 개체를 복제하는 방법을 찾고 있습니다. 그것은 내가 시도한 코드이지만, 일부 공진을 위해 그 안에 노드가 없습니다.

        HtmlDocument HTMLdoc = new HtmlDocument();
        HTMLdoc.LoadHtml(sFetch);

        //duplicate document node
        var webPage = HtmlNode.CreateNode("<html></html>");
        webPage.CopyFrom(HTMLdoc.DocumentNode,true);

내가 생각한 또 다른 방법은 제거 할 모든 요소를 ​​선택하는 xpath를 반전하는 것입니다. 그래서 객체에서 요소를 실제로 제거하지 않고도 그것들을 선택할 수있을 것입니다. 그러나 XPath "not ()"함수를 사용하여 쿼리를 변환하는 방법을 알 수 없습니다. 그것이 내 XPath 쿼리입니다.

        HtmlDocument HTMLdoc = new HtmlDocument();
        HTMLdoc.LoadHtml(sFetch);

        //duplicate document node
        var webPage = HtmlNode.CreateNode("<html></html>");
        webPage.CopyFrom(HTMLdoc.DocumentNode,true);

시간과 도움을 주셔서 감사합니다 :)

인기 답변

나는 비슷한 것을하고있다. 이 정보를 얻은 다음 XML로 변환해야했습니다. 필요한 것은 다음과 같습니다.

        HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
        htmlDoc.LoadHtml(sfetch);

        HtmlNodeCollection page = htmlDoc.DocumentNode.SelectNodes("//table");//whatever tags your are looking for in your doc

        foreach (HtmlNode value in page)
        {
            richTxtboxFilteredHTML.Text += value.InnerText;
        }

이 과정을 더 진행하려면 각 HtmlNode를 계속 참조해야합니다.




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