2015-05-21 3 views
10

Я пытаюсь использовать 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 datasource. Есть ли способ решить эту проблему?

Я получаю это из журнала:

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

Удаление tidy.setXHTML(true) или установить его в ложное и добавление 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> 

Мне нужен текстовый редактор для форматирования. Я не могу гарантировать, какие директивы наши пользователи будут определять и использовать. Это должно быть общее решение, которое работает для любого определенного пользователем директива

+0

Какую версию JTidy вы используете? Вы уверены, что другой конфигурации нет? AFAIK 'setXmlTags (true)' должен решить эту проблему. – manouti

+0

'setXmlTags (true)' на самом деле решает это, но он начинает пытаться закрывать теги с закрывающимися тегами. nanndoj

ответ

0

Я решил эту проблему, внести некоторые изменения в источнике JTidy

https://github.com/nanndoj/jtidy

Я добавил новую конфигурацию под названием dropProprietaryTags

tidy.setDropProprietaryTags(false); 

Сейчас он работает нормально для меня. Он установлен на true по умолчанию, поэтому JTidy может работать по-старому, если новое свойство не установлено на false

3

заходящего следующее свойство после текущей конфигурации Try:

Properties props = new Properties(); 
props.setProperty("new-blocklevel-tags", "datasource"); 
tidy.getConfiguration().addProps(props); 

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

+0

Спасибо за ваш ответ @manouti, но я пишу довольно текстовый редактор для текстового редактора. Я не могу гарантировать, какие директивы наши пользователи будут определять и использовать. Это должно быть общее решение – nanndoj

 Смежные вопросы

  • Нет связанных вопросов^_^