You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XML帮助文件导入RichTextBox时如何保留<b>等样式?

解决RichTextBox显示XML中粗体样式的问题

你当前的问题出在使用了XmlNode.InnerText——这个属性会提取节点下的纯文本内容,自动忽略所有XML标签,所以<b>标签被直接丢弃,自然无法显示粗体。要保留样式,你需要做以下修改:

核心思路

  1. 改用XmlNode.InnerXml获取包含标签的内容,保留<b>这类格式标签
  2. 让RichTextBox解析这些HTML格式的标签,因为WinForms的RichTextBox支持加载HTML片段

修改后的代码示例

private void displayHelpText(string strTitle)
{
    XmlNode xmlNode = XmlDoc.SelectSingleNode("//*[title='" + strTitle + "']");
    if (xmlNode == null)
    {
        richTextBox1.Text = "未找到对应帮助内容";
        return;
    }

    // 将XML内容包装成完整的HTML结构,方便RichTextBox解析
    string htmlContent = $"<html><body>{xmlNode.InnerXml}</body></html>";
    
    // 通过MemoryStream加载HTML到RichTextBox
    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(htmlContent)))
    {
        richTextBox1.Load(ms, RichTextBoxStreamType.Html);
    }
}

额外说明

  • RichTextBox支持的HTML标签有限,仅包括<b>、<i>、<u>、<font>等基础格式标签,复杂标签可能无法识别
  • 注意处理xmlNode为null的情况,避免空引用异常
  • 若要避免XPath注入风险,建议使用参数化查询替代字符串拼接,示例如下:
    XmlNamespaceManager nsMgr = new XmlNamespaceManager(XmlDoc.NameTable);
    nsMgr.AddNamespace("title", strTitle);
    XmlNode xmlNode = XmlDoc.SelectSingleNode("//*[title=$title]", nsMgr);
    

内容的提问来源于stack exchange,提问作者Lance Cruz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 10:18:19