2015-05-07 8 views
9

Próbuję przekonwertować ciąg znaków HTML na dom, aby wprowadzić pewne zmiany na poziomie domeny i przekonwertować je z powrotem na ciąg. Kod HTML jest w języku francuskim, a znaki takie jak é są oznaczone jako &ampeacute; po konwersji przekształconym Łańcuchem.é pokazane jako & eacute; po konwersji dom w java

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 

String modifiedContent = ""; 
StringWriter writer = new StringWriter(); 
StreamResult result = new StreamResult(writer); 
transformer.transform(source, result); 
modifiedContent = writer.toString(); 

"resultats de recherche" jest ciągiem znaków, po dom jest konwertowany na string "Résultats de recherche" jest rezultatem.

Przekazuję to procesorowi FOP, aby przekonwertować go do formatu pdf, więc potrzebuję znaków w oryginalnej postaci.

+0

Czy próbujesz przekonwertować é do \ u00E9 (prezentacja w Unicode), spójrz na ten link, może pomóc: http://tutorials.jenkov.com/java-internationalization/unicode.html – esprittn

+0

'writer.toString()' drukuje 'R & Atilde; © sultats'? – sp00m

+0

@ sp00m, tak, dokładnie – stackMan10

Odpowiedz

1

Wygląda na to, że DOMSource utrzymuje znaki w formie html.

Prawdopodobnie można użyć Jakarta library unescape html method do konwersji znaków html na zwykłe ciągi. W twoim przypadku, należy po prostu dodać ten wiersz:

String unescapedHtml = StringEscapeUtils.unescapeHtml4(modifiedContent); 

upewnij się dodać odpowiednią maven dependency do projektu.

P.S. Wydaje się, że jest nowsza wersja biblioteki na serwerze centralnym, ale nie mogłem znaleźć powiązanego javadoc.

Powiązane problemy