Htmlagilitypack : HTML 텍스트 노드 만들기

c# html-agility-pack

문제

HtmlAgilityPack에서는 사용자 정의 InnerText가있는 HtmlNode (HtmlNode에서 상속) 인 HtmlTextNode 를 만들고 싶습니다.

HtmlTextNode CreateHtmlTextNode(string name, string text)
{
     HtmlDocument doc = new HtmlDocument();
     HtmlTextNode textNode = doc.CreateTextNode(text);
     textNode.Name = name;
     return textNode;
}

문제는 위의 메서드 다음에 textNode.OuterHtmltextNode.InnerHtml 이 "text"와 동일 textNode.InnerHtml 것입니다.

예를 들어 CreateHtmlTextNode("title", "blabla")<Title>blabla</Title> 대신 textNode.OuterHtml = "blabla" 를 생성합니다.

HtmlTextNode 를 만드는 더 좋은 방법이 있습니까?

수락 된 답변

HTMLTextNode 는 텍스트 만 포함하고 태그는 포함하지 않습니다.

그것은 다음과 같습니다 :

<div>                                   - HTML Node
    <span>text</span>                   - HTML Node
    This is the Text Node               - Text Node
    <span>text</span>                   - HTML Node
</div>

표준 HtmlNode를 찾고 있습니다.

<div>                                   - HTML Node
    <span>text</span>                   - HTML Node
    This is the Text Node               - Text Node
    <span>text</span>                   - HTML Node
</div>

추가 할 텍스트에 HtmlDocument.HtmlEncode() 를 호출해야합니다. 이렇게하면 특수 문자가 올바르게 인코딩됩니다.


인기 답변

다음 줄은 내용이있는 바깥 쪽 html을 만듭니다.

var doc = new HtmlDocument();

// create html document
var html = HtmlNode.CreateNode("<html><head></head><body></body></html>");
doc.DocumentNode.AppendChild(html);

// select the <head>
var head = doc.DocumentNode.SelectSingleNode("/html/head");

// create a <title> element
var title = HtmlNode.CreateNode("<title>Hello world</title>");

// append <title> to <head>
head.AppendChild(title);

// returns Hello world!
var inner = title.InnerHtml;

// returns <title>Hello world!</title>
var outer = title.OuterHtml;

희망이 도움이됩니다.




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