HTML 민첩성 팩 - 웹이 아닌 파일 시스템에서만 XML 문서를로드 할 수 있습니다.

.net c# html-agility-pack scrape

문제

나는 웹에서 xhtml 페이지를 다운로드하기 전에 성공적으로 HAP을 사용했습니다. 그러나 이제 XML 문서를로드하고 구문 분석하려고합니다. HAP은 내 파일 시스템에있는 XML 문서 (예 : C : \ xml \ MyXml.xml) 만로드합니다. 웹 (http://www.web.com/doc.xml)에서로드하지 않습니다. Fiddler를 사용하면 HAP이 실제로 웹에서 xml 문서를 요청하고 서버가 xml 문서로 응답한다는 것을 알 수 있습니다. 그러나, 거기서 멈추고 아무것도 파싱되지 않습니다. HtmlDocument는 비어 있거나 ChildNodes가 없습니다. 파일 시스템에서로드 할 때 HtmlDocument로 성공적으로 파싱됩니다.

어떤 아이디어?

수락 된 답변

XML (X가 아닌 HTML 만 사용하는 경우 HAP을 사용할 필요가 없습니다. Net에 포괄적 인 XML 처리 기능이 내장되어 있으므로 :

String PostUrl = "http://www.web.com/doc.xml"; 
WebResponse webResponse = WebRequest.Create(PostUrl).GetResponse();
StreamReader sr = new StreamReader(webResponse.GetResponseStream());

String Result = sr.ReadToEnd().Trim();

XmlDocument xdoc = new XmlDocument(); xdoc.LoadXml(Result);

인기 답변

구문 분석하려는 XML이 XSL 스타일 시트를 지정하여 (X) HTML로 변환 한 다음 어떤 방식으로 조작하려고하기 때문에 HAP을 사용한다고 가정합니다.

이것이 사실이 아니며 원시 XML 구조에 관심이 있다면 Sebastian의 대답에서 알 수 있듯이 .NET의 XmlDocument 및 System.Xml 네임 스페이스를 사용하십시오.

이러한 문서의 HTML 구조를 실제로 조작해야하는 경우 XML을 직접 다운로드하고 System.Xml 을 사용하여 XSLT를 적용한 다음 결과 HTML을 생성 한 다음 HAP과 구문 분석을 시도합니다.




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