.NET/Clawler

HTML Agility Pack 사용시 문제

김모작자 2013. 5. 8. 17:40

HTML 을 불러와 xml 또는 xhtml 로 저장하려할때

1)  form 태그가 하위 요소를 포함하지 않고 혼자서 태그가 닫히는 문제가 있었다

<form>
  <input>
  <input>
</form>

을 변환하고 나면

<form/>
  <input/>
   <input/>

이렇게 되었다.

관련 게시글 : http://htmlagilitypack.codeplex.com/discussions/7121

해결책은 링크에 있는것처럼 소스 코드를 받아 리빌드 하는것이다.
소스 파일 중에 HtmlNode.cs 가 있는데

ElementsFlags.Add("form", HtmlElementFlag.CanOverlap | HtmlElementFlag.Empty);

위와 같이 되어 있을것이다. 저 코드의 htmlelementFlag.Empty 를 지워버리면 된다.

 

2) form 하위 노드가 검색이 안되는 문제

<form>
 <input>
 <input>
</form>

xpath 로 검색하는데 form/input 이 null 로 반환되는 경우

해당 코드를 사용하기 전에

HtmlNode.ElementsFlags.Remove("form");

위 코드를 실행해주면 하위 노드가 나타난다