Htmlagilitypack의 GetElementsByTagName

c# getelementsbytagname html-agility-pack webbrowser-control

문제

어떻게 그 id를 모르는 경우 textbox에 대한 요소를 선택합니까?

내가 그 이드를 안다면 나는 간단히 다음과 같이 쓸 수있다.

HtmlAgilityPack.HtmlNode node = doc.GetElementbyId(id);

하지만 텍스트 상자의 ID를 모르며 웹 브라우저 컨트롤에서 사용할 수있는 HtmlagilityPack에서 GetElementsByTagName 메서드를 찾을 수 없습니다. 웹 브라우저 컨트롤에서 나는 간단하게 다음과 같이 쓸 수 있었다 :

HtmlAgilityPack.HtmlNode node = doc.GetElementbyId(id);

편집하다

다음은 내가 말하는 HTML 양식입니다.

HtmlAgilityPack.HtmlNode node = doc.GetElementbyId(id);

양식의 ID를 모릅니다. 그리고 같은 페이지에 여러 가지 양식이있을 수 있습니다. 내가 아는 유일한 것은 "sometext"이고 나는이 이름을 사용하여이 요소를 얻고 싶습니다. 그래서 나는 모든 양식을 하나씩 구문 분석하고이 이름을 "만나다"라고 찾아야 할 것 같지만 어떻게해야합니까?

수락 된 답변

(예 :로서의 태그 이름으로 태그를 찾고 있다면 form 에 대한 <form name="someForm"> ), 당신은 사용할 수 있습니다 :

var forms = document.DocumentNode.Descendants("form");

<form name="someForm"> 과 같은 name 속성으로 태그를 someForm 다음을 사용할 수 있습니다.

var forms = document.DocumentNode.Descendants("form");

마지막으로 간단한 확장 메소드를 만들 수 있습니다 :

var forms = document.DocumentNode.Descendants("form");

참고 : SelectNodes 및 XPath를 사용하여 문서를 쿼리 할 수도 있습니다.

var forms = document.DocumentNode.Descendants("form");

양식 태그에있는 페이지의 모든 입력을 제공합니다.

var forms = document.DocumentNode.Descendants("form");

페이지에 첫 번째 양식의 모든 입력 사항을 제공합니까?


인기 답변

모든 노드 이름 :

doc.DocumentNode.SelectNodes("//*[@name='name']")

이름으로 입력 노드 :

doc.DocumentNode.SelectNodes("//*[@name='name']")



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