`
javatar
  • 浏览: 1700544 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

XML语法高亮简单实现

    博客分类:
  • HTTL
阅读更多
在写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>");   
		// 过滤&amp;符号   
		//result = result.replaceAll("&amp;", "&amp;amp;");   
		// 过滤dtd实体   
		result = result.replaceAll("(&amp;amp;[A-Z|a-z]+;)", "[entitytempfont]$1</font>");   
		// 过滤HtmlUnicode转码   
		result = result.replaceAll("(&amp;amp;#[0-9]+;)", "[entitytempfont]$1</font>");   
		// 过滤空格   
		result = result.replaceAll(" ", "&amp;nbsp;");   
		// 过滤缩进   
		result = result.replaceAll("\t", "&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;");   
		// 过滤Winodws换行   
		result = result.replaceAll("\r\n", "\n");   
		// 过滤换行   
		result = result.replaceAll("\n", "<br/>\n");   
		// 下面的替换把上面作的标记换成相应颜色   
		result = result.replaceAll("\\[lesstempsign\\]", "&amp;lt;");   
		result = result.replaceAll("\\[greattempsign\\]", "&amp;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文本内容

    在提供的链接中,博主可能分享了一个关于如何实现XML语法高亮的工具或方法。虽然链接不可用,但通常,这样的工具或库可能会包含以下功能: 1. **标签匹配**:高亮工具会自动识别并区分开始和结束标签,例如`&lt;tag&gt;`...

    Notepad++ 的lua.xml 语法高亮和自动补全插件

    Notepad++ 的lua 语法高亮和自动补全插件 下载后放到NotePad++的安装目录下:Notepad++\plugins\APIs\里即可

    Android自定义控件实现语法高亮

    本文将深入探讨如何实现一个自定义的EditText控件,专注于Java代码的语法高亮显示。语法高亮不仅能提高代码的可读性,还能提升用户体验,尤其是在阅读或编辑代码时。 首先,我们需要创建一个新的View类,继承自...

    RichText文本框语法高亮显示

    在富文本框中实现语法高亮显示,首先需要理解基本的文本渲染原理和文本样式控制。这通常涉及到以下关键技术: 1. **正则表达式**:用于匹配代码中的特定语法元素,如关键字、注释、字符串等。通过预定义的正则模式...

    检查XML语法的工具

    总的来说,理解XML语法是处理XML文档的基础,而使用检查XML语法的工具则能有效地辅助我们避免和解决语法错误,提高工作效率。对于XML初学者来说,熟练掌握这类工具将极大地促进对XML的理解和应用。

    GoLang Notepad++语法高亮配置文件

    Notepad++作为一个轻量级的文本编辑器,具有强大的插件支持和自定义能力,对于Go语言开发者而言,搭配语法高亮配置文件,不仅能够满足基本的代码编辑需求,还能实现高效的开发环境。当然,如果你希望更全面的功能,...

    Editplus语法高亮(全套共838种)!

    安装和使用这些语法高亮文件非常简单。通常,你需要将`.stx`文件复制到Editplus的安装目录下的`Syntax`文件夹中,然后在Editplus的“工具”菜单中选择“配置文件”,在“语言”选项卡下就可以看到新添加的语法规则。...

    C#语法高亮显示代码编辑控件

    这个库提供了一个基本的文本编辑器控件,支持多种语言的语法高亮,包括C#、VB.NET、XML等。它具备了基本的代码编辑功能,如自动缩进、代码折叠、搜索替换以及字体和颜色设置。 **安装与引用** 在Visual Studio 2010...

    c#实现高亮显示xml文档

    c#实现的对xml高亮解析器,按照语法对关键字属性等进行高亮显示, 本程序是我从微软的网站上下载 下载的程序运行有点问题,经过了一些简单整理,现在可以运行 但注意本程序现在不支持对带用名称空间namespace的xml...

    JS实现的代码语法高亮检测工具

    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的语法高亮(包含使用说明)

    总的来说,通过以上步骤,我们可以轻松地在Notepad++中实现Scala的语法高亮,使得代码编写更加舒适。不过,记得定期检查和更新Scala的语法文件,以确保与最新的语言特性保持同步。希望这个教程能帮助到那些喜欢...

    EditPlus64位及汇编语言语法高亮配置文件

    这个文件通常是一个XML格式的文档,包含了对汇编关键字、指令和注释的定义,以实现高亮效果。你可以在提供的压缩包中找到预设的汇编语言语法文件,将其导入到EditPlus中。 导入语法文件后,记得在“文件类型”设置...

    Editplus语法高亮拓展

    5. **XML STX文件**:STX(Syntax Templates)是EditPlus的一种自定义语法定义文件格式,用于扩展其对特定文件类型的语法高亮支持。在提供的`xml.stx`文件中,包含了XML相关的语法定义,包括标签、属性、实体引用等...

    notepad++主题和语法高亮配置文件.rar

    在这个名为"notepad++主题和语法高亮配置文件.rar"的压缩包中,包含了两个XML文件:Monokai.xml和CalebNight.xml,这些都是Notepad++的主题配置文件,用于改变编辑器的视觉风格。 首先,我们来看Monokai.xml。...

    docker-intellij-idea, IntelliJ IDEA的Dockerfile文件类型( 语法高亮).zip

    docker-intellij-idea, IntelliJ IDEA的Dockerfile文件类型( 语法高亮) 安装将 Dockerfile.xml 复制到 &lt;YOURIDE_config_folder&gt;/filetypes 并重新启动 IDE ( 想法/PhpStorm ) 。 OS Xcurl --create-dirs

    语法高亮控件

    总的来说,ICSharpCode.TextEditor是一个强大且灵活的文本编辑控件,它为.NET开发者提供了一种便捷的方式来实现语法高亮和代码编辑功能,尤其适用于需要在应用程序中内嵌代码编辑器的情况。通过不断的迭代和优化,它...

    UltraEdit-UE-600多个语法高亮文件-最全-最完整-打包(共673个)

    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 可用字节

    nesC for notepad++,nesC语言在notepad++ 中的语法高亮显示插件,有安装方法。目的是帮助和我一样发愁的人

    Notepad++ 是一款广受欢迎的免费源代码编辑器,支持多种编程语言,并且具有语法高亮、代码折叠和宏等功能。然而,Notepad++ 默认并不支持nesC的语法高亮。因此,为了在Notepad++中获得nesC的友好开发环境,我们需要...

    WPS语法高亮插件V2.0(C++源码)

    综上所述,这个项目展示了如何使用C++编程语言和TinyXml库来开发一个WPS插件,实现了语法高亮功能,并通过代码重构提高了插件的稳定性和性能。对于想要学习WPS插件开发、C++编程、XML解析以及代码重构的开发者来说,...

    9个javascript语法高亮插件 推荐

    本文将介绍九款基于JavaScript实现的语法高亮插件,这些插件能够为各种编程语言提供良好的代码格式化和高亮效果。 1. **SyntaxHighlighter** SyntaxHighlighter是由Alex Gorbatchev开发的知名插件,广泛应用于博客...

Global site tag (gtag.js) - Google Analytics