Sembra che Jericho sia esattamente quello che vuoi. Si tratta di un parser HTML robusto progettato specificamente per apportare modifiche non invadenti al documento sorgente.
Sebbene non sia dotato di interfacce DOM, SAX o StAX, ha API personalizzate che sono abbastanza simili a quegli standard che dovresti essere in grado di adattare il tuo approccio a loro abbastanza facilmente, o scrivere un adattatore tra qualsiasi cosa stai usando e Jericho. Ad esempio, puoi eseguire query XPath sui documenti Jericho usando Jaxen - vedi this blog entry per un esempio.
Jericho ha begin e termina gli attributi per ogni elemento, e anche per parti dell'elemento come il nome del tag o anche un nome di attributo, quindi puoi modificare il documento tu stesso con quell'informazione, ma dove Jericho brilla davvero è OutputDocument class, che consente di specificare direttamente le sostituzioni chiamando i metodi appropriati con gli elementi di Jericho che corrispondono alla query invece di dover richiamare esplicitamente getBegin() e getEnd() su di essi e passarlo a un metodo di sostituzione.
Non sarebbe meglio lavorare con il DOM e quindi convertirlo in una rappresentazione String? Avrai una versione più pulita dell'HTML insieme alle tue modifiche. C'è una ragione specifica per cui è necessario modificare la stringa sorgente originale? –
Posso pensarne uno. Rende più facile capire quali modifiche sostanziali sono state apportate se non si è costretti a guadare attraverso una serie di modifiche testuali che sono solo il risultato di unpare che rende l'XML un po 'diverso. –
Vivin - Sto provando a "pulire" determinati elementi sensibili dalle pagine HTML in modo che possa eseguire altri test di analisi rispetto all'HT originale (con i dati sensibili sovrascritti con 999 o xxx, ecc.). Inoltre, voglio essere in grado di eseguire test diversi sia in Java che in Javascript, quindi la sorgente originale è il miglior punto di partenza per me, poiché i parser Java HTML e il parser HTML di ogni browser possono generare DOM diversi (anche se probabilmente non si dovrebbe). –