HTML Agility Pack을 사용하여 HTML div InnerText 태그 바꾸기

asp.net c# html-agility-pack html-parsing

문제

HTML 애자 팩을 사용하여 HTML 문서를 조작하고 편집합니다. 나는 다음과 같은 필드에서 텍스트를 변경하고 싶다 :

<div id="Div1"><b>Some text here.</b><br></div>

이 div 내의 텍스트를 다음과 같이 업데이트하려고합니다.

<div id="Div1"><b>Some other text.</b><br></div>

다음 코드를 사용하여이 작업을 시도했지만 InnerText 속성이 읽기 전용이므로 작동하지 않는 것 같습니다.

HtmlTextNode hNode = null;
hNode = hDoc.DocumentNode.SelectSingleNode("//div[@id='Div1']") as HtmlTextNode;
hNode.InnerText = "Some other text.";
hDoc.Save("C:\FileName.html");

여기서 내가 뭘 잘못하고 있니? 위에서 언급했듯이 InnerText는 읽기 전용 필드이지만 "가져 오거나 설정 한"설명서에 기록되어 있습니다. 이 작업을 수행 할 수있는 다른 방법이 있습니까?

수락 된 답변

표현식은 여기에서 사용됩니다 : //div[@id='Div1']HtmlTextNode 가 아닌 div 선택하므로, hNode 변수는 예제에서 null 을 유지합니다.

InnerText 속성은 실제로 읽기 전용이지만 HtmlTextNode 속성 Text 는 필요한 값을 설정하는 데 사용할 수 있습니다. 하지만이 전에 텍스트 노드를 가져와야합니다. 이 표현식으로 쉽게 할 수 있습니다 : //div[@id='Div1']//b//text() :

hNode = hDoc.DocumentNode
    .SelectSingleNode("//div[@id='Div1']//b//text()") as HtmlTextNode;
hNode.Text = "Some other text.";


Related

아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow