在C#的WinForms开发中,把XML文件内容加载到RichTextBox并做基础高亮,是处理配置文件或接口报文时很实用的功能。下面介绍一种不依赖第三方控件、用原生API就能实现的办法。

一、读取XML文件内容
可以使用File.ReadAllText方法把整个XML文件读成字符串,这样后续直接交给RichTextBox显示即可。
using System; using System.IO; using System.Windows.Forms; // 读取XML文件文本 string xmlPath = @"D:test.xml"; string xmlText = File.ReadAllText(xmlPath);
二、将文本放入RichTextBox
把读到的字符串赋给RichTextBox的Text属性,先完成基础显示,高亮在下一步处理。
RichTextBox rtb = new RichTextBox(); rtb.Text = xmlText;
三、实现简单的XML高亮
思路是遍历文本,遇到以<开头的内容视为标签,标签名用蓝色,属性名用绿色,普通文本用黑色。下面给出一个基于正则的简化高亮方法。
using System.Text.RegularExpressions;
using System.Drawing;
// 简单高亮XML
public void HighlightXml(RichTextBox rtb, string xml)
{
rtb.Text = xml;
rtb.SelectAll();
rtb.SelectionColor = Color.Black;
// 匹配标签 <tag ... > 或 </tag>
MatchCollection tags = Regex.Matches(xml, @"</?[^>]+>");
foreach (Match m in tags)
{
rtb.Select(m.Index, m.Length);
rtb.SelectionColor = Color.Blue;
}
// 匹配属性名
MatchCollection attrs = Regex.Matches(xml, @"s[w:-]+(?==)");
foreach (Match m in attrs)
{
rtb.Select(m.Index, m.Length);
rtb.SelectionColor = Color.Green;
}
rtb.Select(0, 0);
}
四、完整调用示例
在按钮点击事件中组合上面的逻辑,就能把文件内容显示并高亮。
private void btnLoad_Click(object sender, EventArgs e)
{
string path = @"D:test.xml";
if (File.Exists(path))
{
string content = File.ReadAllText(path);
HighlightXml(richTextBox1, content);
}
}
注意事项
- 正则方式只适合结构较规范的XML,复杂嵌套建议用XmlReader逐节点读取再上色。
- 大文件高亮可能卡顿,可先限制显示行数。
- 文中用到的<code>标签仅是说明,实际代码里用的是字符串匹配,不是HTML标签。
如果只想看内容不想写正则,也可以把XML转成带颜色的RTF再赋给RichTextBox,但解析逻辑本质类似。
C#XMLRichTextBox修改时间:2026-07-28 11:12:18