HtmlAgilityPack : 들여 쓰기 된 HTML을 만드는 방법?

c# html-agility-pack html-generation

문제

그래서, 나는 HtmlAgilityPack을 사용하여 HTML을 생성하고 있으며 완벽하게 작동하지만 html 텍스트는 들여 쓰여지지 않습니다. 들여 쓰기 된 XML을 얻을 수는 있지만 HTML이 필요합니다. 방법이 있습니까?

HtmlDocument doc = new HtmlDocument();

// gen html
HtmlNode table = doc.CreateElement("table");
table.Attributes.Add("class", "tableClass");
HtmlNode tr = doc.CreateElement("tr");
table.ChildNodes.Append(tr);
HtmlNode td = doc.CreateElement("td");
td.InnerHtml = "—";
tr.ChildNodes.Append(td);

// write text, no indent :(
using(StreamWriter sw = new StreamWriter("table.html"))
{
        table.WriteTo(sw);
}

// write xml, nicely indented but it's XML!
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
settings.Indent = true;
settings.ConformanceLevel = ConformanceLevel.Fragment;
using (XmlWriter xw = XmlTextWriter.Create("table.xml", settings))
{
        table.WriteTo(xw);
}

수락 된 답변

내가 아는 한, HtmlAgilityPack은 이것을 할 수 없다. 하지만 비슷한 질문으로 제안 된 HTML 깔끔한 팩을 살펴볼 수 있습니다.


인기 답변

아니요, 그리고 그것은 "설계 상"의 선택입니다. 대부분의 경우 - 공백은 특정 의미가 없으며 HTML은 HTML이 아닌 XML 인 XML (또는 XHTML)과 HTML간에 큰 차이가 있습니다.

공백을 변경하면 일부 브라우저에서 특정 HTML 덩어리를 렌더링하는 방식, 특히 잘못된 HTML (일반적으로 라이브러리에서 잘 처리되는 방식)을 변경할 수 있기 때문에 사소한 개선은 아닙니다. 그리고 Html Agility Pack은 마크 업 작성 방법을 최소화하는 것이 아니라 HTML이 렌더링 되는 방식을 유지하도록 설계되었습니다.

나는 그것이 가능하지 않거나 보통 불가능하다고 말하는 것이 아닙니다. 분명히 당신은 XML과 voil로 변환 할 수 있습니다 (그리고 이것을 쉽게 만들기위한 확장 메소드를 작성할 수 있습니다). 그러나 일반적인 경우 렌더링 된 출력은 다를 수 있습니다.




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