在写Demo时,需要将XML示例用语法高亮的格式显示在网页上,找了半天,没找到Java写的,java2html和JSyntaxHighlighter都只能转换Java代码,不能转XML,其它的大部分是JS写的,较出名的dp.SyntaxHighlighter生成的HTML代码不符合xhtml规范,还是自己先写个简单的用着,有好的工具请推荐下,谢谢。
public class XmlCodeFilter {
private String textColor = "#000000";
private String commentColor = "#3f5fbf";
private String tagColor = "#3f7f5f";
private String attributeColor = "#7f0055";
private String equalColor = "#000000";
private String stringColor = "#2a00ff";
private String entityColor = "#2a00ff";
private String dataColor = "#3f7f5f";
public String filter(String text) {
String result = text;
// 过滤CDATA //TODO 应该文本化CDATA里面的标签
result = result.replaceAll("<!\\[CDATA\\[([^(\\]\\])]*)\\]\\]>", "[datatempfont][lesstempsign]![CDATA[[/endtempfont]$1[datatempfont]]][greattempsign][/endtempfont]");
// 过滤注释
result = result.replaceAll("<!--([^(\\-\\->)]*)-->", "[commenttempfont][lesstempsign]!--$1--[greattempsign][/endtempfont]");
// 过滤标签
result = result.replaceAll("<([^(<|>)]+)>", "[tagtempfont][lesstempsign]$1[greattempsign]</font>");
// 过滤属性(双引号) //TODO 单双引号应改为反向引用方式
result = result.replaceAll("(\\s+)([\\w|:]+)(\\s*)\\=(\\s*)(\"[^\"]*\")", "$1[attributetempfont]$2</font>$3[equaltempfont]=</font>$4[stringtempfont]$5</font>");
// 过滤属性(单引号)
result = result.replaceAll("(\\s+)([\\w|:]+)(\\s*)\\=(\\s*)(\'[^\']*\')", "$1[attributetempfont]$2</font>$3[equaltempfont]=</font>$4[stringtempfont]$5</font>");
// 过滤&符号
//result = result.replaceAll("&", "&amp;");
// 过滤dtd实体
result = result.replaceAll("(&amp;[A-Z|a-z]+;)", "[entitytempfont]$1</font>");
// 过滤HtmlUnicode转码
result = result.replaceAll("(&amp;#[0-9]+;)", "[entitytempfont]$1</font>");
// 过滤空格
result = result.replaceAll(" ", "&nbsp;");
// 过滤缩进
result = result.replaceAll("\t", "&nbsp;&nbsp;&nbsp;&nbsp;");
// 过滤Winodws换行
result = result.replaceAll("\r\n", "\n");
// 过滤换行
result = result.replaceAll("\n", "<br/>\n");
// 下面的替换把上面作的标记换成相应颜色
result = result.replaceAll("\\[lesstempsign\\]", "&lt;");
result = result.replaceAll("\\[greattempsign\\]", "&gt;");
result = result.replaceAll("\\[/endtempfont\\]", "</font>");
result = result.replaceAll("\\[commenttempfont\\]", "<font color=\"" + commentColor + "\">");
result = result.replaceAll("\\[datatempfont\\]", "<font color=\"" + dataColor + "\">");
result = result.replaceAll("\\[tagtempfont\\]", "<font color=\"" + tagColor + "\">");
result = result.replaceAll("\\[attributetempfont\\]", "<font color=\"" + attributeColor + "\">");
result = result.replaceAll("\\[equaltempfont\\]", "<font color=\"" + equalColor + "\">");
result = result.replaceAll("\\[stringtempfont\\]", "<font color=\"" + stringColor + "\">");
result = result.replaceAll("\\[entitytempfont\\]", "<font color=\"" + entityColor + "\">");
//return "<font color=\"" + textColor + "\">" + result + "</font>";
return result;
}
}
分享到:
相关推荐
在提供的链接中,博主可能分享了一个关于如何实现XML语法高亮的工具或方法。虽然链接不可用,但通常,这样的工具或库可能会包含以下功能: 1. **标签匹配**:高亮工具会自动识别并区分开始和结束标签,例如`<tag>`...
Notepad++ 的lua 语法高亮和自动补全插件 下载后放到NotePad++的安装目录下:Notepad++\plugins\APIs\里即可
本文将深入探讨如何实现一个自定义的EditText控件,专注于Java代码的语法高亮显示。语法高亮不仅能提高代码的可读性,还能提升用户体验,尤其是在阅读或编辑代码时。 首先,我们需要创建一个新的View类,继承自...
在富文本框中实现语法高亮显示,首先需要理解基本的文本渲染原理和文本样式控制。这通常涉及到以下关键技术: 1. **正则表达式**:用于匹配代码中的特定语法元素,如关键字、注释、字符串等。通过预定义的正则模式...
总的来说,理解XML语法是处理XML文档的基础,而使用检查XML语法的工具则能有效地辅助我们避免和解决语法错误,提高工作效率。对于XML初学者来说,熟练掌握这类工具将极大地促进对XML的理解和应用。
Notepad++作为一个轻量级的文本编辑器,具有强大的插件支持和自定义能力,对于Go语言开发者而言,搭配语法高亮配置文件,不仅能够满足基本的代码编辑需求,还能实现高效的开发环境。当然,如果你希望更全面的功能,...
安装和使用这些语法高亮文件非常简单。通常,你需要将`.stx`文件复制到Editplus的安装目录下的`Syntax`文件夹中,然后在Editplus的“工具”菜单中选择“配置文件”,在“语言”选项卡下就可以看到新添加的语法规则。...
这个库提供了一个基本的文本编辑器控件,支持多种语言的语法高亮,包括C#、VB.NET、XML等。它具备了基本的代码编辑功能,如自动缩进、代码折叠、搜索替换以及字体和颜色设置。 **安装与引用** 在Visual Studio 2010...
c#实现的对xml高亮解析器,按照语法对关键字属性等进行高亮显示, 本程序是我从微软的网站上下载 下载的程序运行有点问题,经过了一些简单整理,现在可以运行 但注意本程序现在不支持对带用名称空间namespace的xml...
JS实现的代码语法高亮检测工具 支持C/C++、C#、CSS、Delphi/Kylix、Pascal、Java、Vb/Vb.net、J(ava)Script、ActionScript、Php、Python、Ruby/Rails、Perl、Assembly、批处理、UNIX Shell、AWK、Sql、xml/xhtml20...
总的来说,通过以上步骤,我们可以轻松地在Notepad++中实现Scala的语法高亮,使得代码编写更加舒适。不过,记得定期检查和更新Scala的语法文件,以确保与最新的语言特性保持同步。希望这个教程能帮助到那些喜欢...
这个文件通常是一个XML格式的文档,包含了对汇编关键字、指令和注释的定义,以实现高亮效果。你可以在提供的压缩包中找到预设的汇编语言语法文件,将其导入到EditPlus中。 导入语法文件后,记得在“文件类型”设置...
5. **XML STX文件**:STX(Syntax Templates)是EditPlus的一种自定义语法定义文件格式,用于扩展其对特定文件类型的语法高亮支持。在提供的`xml.stx`文件中,包含了XML相关的语法定义,包括标签、属性、实体引用等...
在这个名为"notepad++主题和语法高亮配置文件.rar"的压缩包中,包含了两个XML文件:Monokai.xml和CalebNight.xml,这些都是Notepad++的主题配置文件,用于改变编辑器的视觉风格。 首先,我们来看Monokai.xml。...
docker-intellij-idea, IntelliJ IDEA的Dockerfile文件类型( 语法高亮) 安装将 Dockerfile.xml 复制到 <YOURIDE_config_folder>/filetypes 并重新启动 IDE ( 想法/PhpStorm ) 。 OS Xcurl --create-dirs
总的来说,ICSharpCode.TextEditor是一个强大且灵活的文本编辑控件,它为.NET开发者提供了一种便捷的方式来实现语法高亮和代码编辑功能,尤其适用于需要在应用程序中内嵌代码编辑器的情况。通过不断的迭代和优化,它...
xjtag.uew xml.uew xmlschema.uew xquery.uew xsl.uew XYplorer.uew Y!WE.uew yaml.uew yang.uew zillions.uew zmud.uew zope.uew zOSasm.uew 673 个文件 4,959,962 字节 0 个目录 328,660,770,816 可用字节
Notepad++ 是一款广受欢迎的免费源代码编辑器,支持多种编程语言,并且具有语法高亮、代码折叠和宏等功能。然而,Notepad++ 默认并不支持nesC的语法高亮。因此,为了在Notepad++中获得nesC的友好开发环境,我们需要...
综上所述,这个项目展示了如何使用C++编程语言和TinyXml库来开发一个WPS插件,实现了语法高亮功能,并通过代码重构提高了插件的稳定性和性能。对于想要学习WPS插件开发、C++编程、XML解析以及代码重构的开发者来说,...
本文将介绍九款基于JavaScript实现的语法高亮插件,这些插件能够为各种编程语言提供良好的代码格式化和高亮效果。 1. **SyntaxHighlighter** SyntaxHighlighter是由Alex Gorbatchev开发的知名插件,广泛应用于博客...