HTML 민첩성 분석

c# html-agility-pack linq xml

문제

HTML 테이블을 구문 분석하고 바운드 목록 상자에서 XML을 사용하여 LINQ에 내용을 표시하고 싶습니다.

HTML Agility 팩을 사용하고 있으며이 코드를 사용하고 있습니다.

    HtmlWeb web = new HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.SourceURL");
    HtmlNode rateNode = doc.DocumentNode.SelectSingleNode("//div[@id='FlightInfo_FlightInfoUpdatePanel']");
    string rate = rateNode.InnerText;
    this.richTextBox1.Text = rate;

HTML은 다음과 같이 보입니다.

    HtmlWeb web = new HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.SourceURL");
    HtmlNode rateNode = doc.DocumentNode.SelectSingleNode("//div[@id='FlightInfo_FlightInfoUpdatePanel']");
    string rate = rateNode.InnerText;
    this.richTextBox1.Text = rate;

하지만 이걸 돌려주는거야.

    HtmlWeb web = new HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.SourceURL");
    HtmlNode rateNode = doc.DocumentNode.SelectSingleNode("//div[@id='FlightInfo_FlightInfoUpdatePanel']");
    string rate = rateNode.InnerText;
    this.richTextBox1.Text = rate;

내가 원했던 것은 XML 형식을 사용하고 LINQ to XML을 사용하여 바인딩 된 목록 상자 항목 소스에 XML을 구문 분석하는 것입니다.

각 클래스에 대해 아래의 변형을 사용해야한다고 생각하지만 도움이 필요합니다.

    HtmlWeb web = new HtmlWeb();
    HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.SourceURL");
    HtmlNode rateNode = doc.DocumentNode.SelectSingleNode("//div[@id='FlightInfo_FlightInfoUpdatePanel']");
    string rate = rateNode.InnerText;
    this.richTextBox1.Text = rate;

수락 된 답변

HTML을 제거하는 InnerText 를 사용하고 있습니다.

InnerHtml 사용 :

string rate = rateNode.InnerHtml;

이 문자열에서 XML 문서를 만들 수 있습니다 (유효한 XML이라고 가정).

rateNode 를 검색 한 것과 같은 방식으로 해당 rateNode 를 쿼리 할 수도 있습니다. rateNode , 해당 하위 노드를 선택합니다.

string rate = rateNode.InnerHtml;

인기 답변

linq에서 xml으로 작업하려면 HtmlDocument를 XML 문자열로 변환 할 수 있습니다.

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.SourceURL");  
doc.OptionOutputAsXml = true;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);
doc.Save(xw);
string result = sw.ToString();

그런 다음 XDocument objet를 만들고 XML 문자열로로드하면됩니다.

HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load("http://www.SourceURL");  
doc.OptionOutputAsXml = true;
System.IO.StringWriter sw = new System.IO.StringWriter();
System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);
doc.Save(xw);
string result = sw.ToString();

Linq와 함께 할 XDocument가 생겼습니다.




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