문제

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top