微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – jTidy漂亮打印自定义HTML标签

我试图使用JTidy来打印出由用户生成的格式良好的 HTML
<div class="component-holder ng-binding ng-scope ui-draggable ui-draggable-handle" data-component="cronos-datasource" id="cronos-datasource-817277">
    <datasource name="" entity="" key="" endpoint="" rows-per-page="">
        <i class="cpn cpn-datasource"></i>
    </datasource>
</div>

这是我的配置:

Tidy tidy = new Tidy();
tidy.setXHTML(true);
tidy.setIndentContent(true);
tidy.setPrintBodyOnly(true);
tidy.setTidyMark(false);
tidy.setWraplen(2000);
tidy.setDropProprietaryAttributes(false);
tidy.setDropEmptyParas(false);
tidy.setTrimEmptyElements(false);

但是jTidy正在删除我的AngularJS数据源指令.有没有办法解决这个问题?

我从日志中得到这个:

line 1 column 191 - Error: <datasource> is not recognized!
line 1 column 191 - Warning: discarding unexpected <datasource>

删除tidy.setXHTML(true)或将其设置为false并添加tidy.setXmlTags(true)实际上解决了这个问题,它开始考虑用户定义的标签,但这不是一个很好的解决方案,因为JTidy开始尝试关闭自封装标签.

<!-- this code -->
 <img src="anythig.jpg"/>
 <div id="anyid"></div> 

 <!-- will become -->
 <img src="anythig.jpg">
     <div id="anyid"></div>
 </img>

我需要一个格式化的文本编辑器.我不能保证我们的用户将会定义和使用哪些指令.它必须是一个通用的解决方案,适用于任何用户定义的指令

解决方法

尝试在当前配置之后设置以下属性
Properties props = new Properties();
props.setProperty("new-blocklevel-tags","datasource");
tidy.getConfiguration().addProps(props);

http://tidy.sourceforge.net/docs/quickref.html#new-blocklevel-tags.

原文地址:https://www.jb51.cc/java/123756.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐