HTMLAgilityPack ChildNodes 인덱스가 작동하지만 명명 된 노드는 작동하지 않습니다.

html-agility-pack selectsinglenode

문제

HTMLAgilityPack을 사용하여 XML API 응답을 구문 분석하고 있습니다. API 호출에서 결과 항목을 선택할 수 있습니다. 그런 다음 항목을 반복하고 ChildNodes를 테이블에 쓰려고합니다. 다음과 같이 ChildNodes를 선택하면 :

sItemId = dnItem.ChildNodes(0).innertext

나는 적절한 itemId 결과를 얻는다. 하지만 내가 시도 할 때 :

sItemId = dnItem.ChildNodes(0).innertext

나는 "Referenced 객체에 'Nothing'값이 있습니다."

나는 "itemID [1]", "/ itemId [1]"과 문자열의 veriety를 시도했다. SelectSingleNode 및 ChildNodes.Item ( "itemId"). innertext 시도했습니다. 유일한 방법은 색인을 사용하는 것입니다.

인덱스를 사용할 때의 문제점은 결과에서 자식 요소가 생략되어 인덱스를 버리는 경우가 종종 있습니다.

아무도 내가 뭘 잘못하고 있는지 알아?

수락 된 답변

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를 사용했고, 필자의 필요에 따라 변경했다. 행운을 빕니다!




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