htmlagilitypack childnodes index works, node node는 그렇지 않습니다
-
19-09-2019 - |
문제
htmlagilitypack을 사용하여 XML API 응답을 구문 분석하고 있습니다. API 호출에서 결과 항목을 선택할 수 있습니다. 그런 다음 항목을 살펴보고 어린이를 테이블에 쓰고 싶습니다. 다음과 같은 말을하여 어린이를 선택할 때
sItemId = dnItem.ChildNodes(0).innertext
적절한 itemid 결과를 얻습니다. 하지만 내가 시도 할 때 :
sItemId = dnItem.ChildNodes("itemId").innertext
나는 "참조 된 객체의 값은 '아무것도 없다"는 값을 얻는다.
나는 "itemid [1], "/itemid [1]및 현악기의 진실을 시도했습니다. 나는 selectsinglenode 및 childnodes.item ( "itemid"). 내부 텍스트를 시도했습니다. 일한 유일한 것은 인덱스를 사용하는 것입니다.
인덱스 사용의 문제점은 때때로 어린이 요소가 결과에서 생략되고 인덱스를 제거한다는 것입니다.
내가 뭘 잘못하고 있는지 아는 사람 있나요?
해결책
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(@webHTMLeditor.TextXhtml);
HtmlNodeCollection tableRows = htmlDoc.DocumentNode.SelectNodes("//tr");
for (int i = 0; i < tableRows.Count; i++)
{
HtmlNode tr = tableRows[i];
HtmlNode[] td = new HtmlNode[2];
string xpath = tr.XPath + "//td";
HtmlNodeCollection cellRows = tr.SelectNodes(@xpath);
//td[0] = tr.ChildNodes[1];
//td[1] = tr.ChildNodes[3];
try
{
td[0] = cellRows[0];
td[1] = cellRows[1];
}
catch (Exception)
{ }
//etc
}
코드는 행당 셀 별로 행별로 표에서 데이터를 추출하는 데 사용됩니다. 기존 XPath를 사용했고 필요에 따라 변경했습니다. 행운을 빕니다!
제휴하지 않습니다 StackOverflow