10

私は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 は私の AngularJSdatasourceディレクティブを削除しています。この問題を回避する方法はありますか?

ログからこれを取得しています:

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>

テキスト エディター用のフォーマッターが必要です。ユーザーがどのディレクティブを定義して使用するかは保証できません。これは、ユーザー定義のディレクティブで機能する一般的なソリューションでなければなりません

4

2 に答える 2

0

JTidyソースにいくつかの変更を加えて、この問題を解決しました

https://github.com/nanndoj/jtidy

という新しい構成を追加しましたdropProprietaryTags

tidy.setDropProprietaryTags(false);

今はうまくいっています。デフォルトでに設定さtrueれているため、新しいプロパティが設定されていない場合、JTidy は古い方法で動作します。false

于 2015-07-09T18:29:58.363 に答える