2015-05-21 9 views
10

Sto cercando di utilizzare JTidy per stampare abbastanza un HTML ben formato generato dall'utente:jTidy tag abbastanza stampa personalizzato 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> 

Questo è il mio config:

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); 

Ma jTidy è rimuovendo la mia direttiva AngularJS datasource. C'è un modo per lavorare intorno a questo problema?

sto ottenendo questo dal registro:

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

Rimozione tidy.setXHTML(true) o l'impostazione su false e aggiungendo tidy.setXmlTags(true) effettivamente risolvere questo problema e iniziare a prendere in considerazione i tag definiti dall'utente, ma questo non è una buona soluzione perché JTidy inizia a provare a chiudere i tag che si chiudono automaticamente.

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

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

Ho bisogno di un formattatore per un editor di testo. Non posso assicurare quali direttive verranno definite e utilizzate dai nostri utenti. Deve essere una soluzione generica, che funziona per qualsiasi utente definito direttiva

+0

Quale versione di JTidy stai usando? Sei sicuro che non ci sia altra configurazione? AFAIK 'setXmlTags (true)' dovrebbe risolvere questo problema. – manouti

+0

'setXmlTags (true)' in realtà risolve questo problema, ma inizia a provare a chiudere i tag auto-inclusi esempio nanndoj

risposta

0

ho risolto questo problema apportare alcune modifiche in JTidy fonte

https://github.com/nanndoj/jtidy

ho aggiunto una nuova configurazione chiamato dropProprietaryTags

tidy.setDropProprietaryTags(false); 

ora è lavorare bene per me. È impostato su true per impostazione predefinita, quindi JTidy può funzionare alla vecchia maniera se la nuova proprietà non è impostata su false

3

impostando la seguente proprietà dopo la configurazione corrente Prova:

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

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

+0

Grazie per la tua risposta @manouti, ma sto scrivendo un bel programma di formattazione per un editor di testo. Non posso assicurare quali direttive verranno definite e utilizzate dai nostri utenti. Deve essere una soluzione generica – nanndoj