gpt4 book ai didi

c# - 为什么 HtmlParser 会删除换行符标记?

转载 作者:行者123 更新时间:2023-12-04 04:05:02 26 4
gpt4 key购买 nike

我正在使用这个 HtmlFromXamlConverter来自微软并试图在 RichTextBox 上显示 html 脚本。HtmlToXamlConverter 工作正常,但 HtmlFromXamlConverter 不行。

例子:

#Part.143
<p><b><font size="5">Wundklassifikation Diabetisches Fußsyndrom nach Wagner</font></b></p>
<b>Grad 0</b><br>Keine Läsion, evtl. Fußdeformation oder Cellulitis<br><br>
<b>Grad 1</b><br>Oberflächliches Ulkus<br><br>
<b>Grad 2</b><br>Tiefes Ulkus bis zur Gelenkkapel<br><br>
<b>Grad 3</b><br>Tiefes Ulkus mit Abszedierung, Osteomyelitis, Infektion der Gelenkkapsel<br><br>
<b>Grad 4</b><br>Begrenzte Vorfuß- oder Fersennekrose<br><br>
<b>Grad 5</b><br>Nekrose des gesamten Fußes<br><br>

如果我使用 HtmlToXamlConverter 将此 html 脚本转换为 XAML 脚本, 它在 RichTextBox 上显示如下: Screenshot from RichTextBox

然后当我使用 HtmlFromXamlConverter 将它从 XAML 转换回 html 时并使用生成的html代码显示在RichTextBox上,在RichTextBox上显示如下: Screenshot from RichTextBox (不再包括换行符)

这是我用来与 XAML 相互转换的 C# 代码

将 html 转换为 Xaml:

if(XamlReader.Parse(HtmlToXamlConverter.ConvertHtmlToXaml(File.ReadAllText(@"C:\Users\XXX\Documents\testHtml.html"), true)) is FlowDocument flowDoc)
{

RichTextBox.Document = flowDoc;
}

从 Xaml 转换回 html:

string str1 = XamlWriter.Save(RichTextBox.Document);
string str = XamlToHtmlConverter.ConvertXamlToHtml(str1);

我试了好久都没成功。我很感激你的帮助

最佳答案

看起来这是转换器不对称的情况。

试试这个:

  • 在文件中查找(在 Visual Studio 中为 Ctrl-Shift-F),然后搜索 "Paragraph" .您会看到它在 ToXamlFromXaml 中都有匹配项。他们负责转换<p><Paragraph>反之亦然。
  • 现在寻找"LineBreak" .这是您问题的原因;它仅存在于 ToXaml 中,反之则不然。

解决方案是在 HtmlFromXamlConverter 中添加一个 LineBreak 处理程序。只需将它添加到段落处理程序旁边即可。

case "Paragraph":
htmlElementName = "p";
break;
// Add these:
case "LineBreak":
htmlElementName = "br";
break;

应该这样做。

注意:我希望你没有使用 <hr>因为这是另一个行不通的问题,而且更难修复。

关于c# - 为什么 HtmlParser 会删除换行符标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62667057/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com