我需要輸出所有的明文的,其可以包括有效和/或無效的HTML和可能的文本是表面上類似於HTML消息內(內即非HTML文本<...>
如:< why would someone do this?? >
)。從消息刪除HTML安全
保留所有非HTML內容比刪除所有HTML更重要,但理想情況下,我希望擺脫儘可能多的HTML以提高可讀性。
我目前使用的HTML敏捷性包,但我有問題,其中內<
和>
非HTML也將被刪除,例如:
我的功能:
text = HttpUtility.HtmlDecode(text);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(text);
text = doc.DocumentNode.InnerText;
簡單的例子,輸入* :
this text has <b>weird < things</b> going on >
實際輸出(不可接受的,失去了單詞 「東西」):
this text has weird going on >
所需的輸出:
this text has weird < things going on >
有沒有一種方法,以消除HTML敏捷性包內唯一合法的HTML標籤不剝出其他內容可能包括<
和/或>
?或者是否需要手動創建一個白名單標籤以刪除,如this question?這是我的回退解決方案,但我希望有一個更完整的解決方案內置於HTML敏捷包(或其他工具),我只是無法找到。
*(實際輸入往往有一噸的它不需要HTML的,我可以給一個較長的例子,如果這樣做是有用的)
當處理破損的HTML時,你將會有缺陷。 HTMLAgilityPack將「東西」解釋爲HTML內容的一部分並不奇怪。當HTML無效時,圖書館必須使用啓發式方法進行猜測,這些啓發式算法並不完美。即使你像Kevin在答案中編寫自己的解析器一樣,你也不會變得更好。 – Amy
我找到了正則表達式'/ <[^>]> /'是找到並移除標籤的好方法。所以'Regex.Replace(輸入,「<[^>」>「,」「)'應該是一個很好的起點。儘管如此,避免完全解析HTML會更好。 –