Używamy Jsoup do parsowania, manipulowania i rozszerzania szablonu html. Do tej pory wszystko działa bez zarzutu, dopóki nie dojdzie do pojedynczych cytatów wykorzystanych w połączeniu z atrybutów HTMLJsoup zmienia wyjście z pojedynczego cudzysłowu na podwójny cudzysłów na atrybutach HTML
<span data-attr='JSON'></span>
To urywek HTML jest konwertowane do
<span data-attr="JSON"></span>
które będą sprzeczne z wewnętrzną danych JSON, który jest określony jako ważny z cudzysłów tylko
{"param" : "value"} //valid
{'param' : 'value'} //invalid
więc musimy zmusić Jsoup NOT zmiany te apostrofów podwójnie cytować, ale jak? Obecnie jest to nasz kod do parsowania i tworzenia treści html.
pageTemplate = Jsoup.parse(new File(mainTemplateFilePath), "UTF-8");
pageTemplate.outputSettings().escapeMode(Entities.EscapeMode.xhtml);
pageTemplate.outputSettings().charset("UTF-8");
... adding some html
pageTemplate.html(); // will output the double quoted attributes :(
To może być błąd w implementacji Jsoup. Możesz zgłosić (lub nawet lepiej, omówić to z programistami) na http://jsoup.org/bugs – Vulcan
Nie jestem pewien, czy rozumiem, jaki jest tutaj problem. Czy możesz podać przykład ostatecznego wyniku i przykład wyjścia, które chciałbyś mieć zamiast tego? Czy mówisz, że kończysz na '' gdy oczekujesz ' '? –
" nie jest prawidłowy json, więc co mam z tym zrobić, czy też się mylę? I tak, szablon przed przetwarzaniem to 'data-attr = ''' i przy pomocy Jsoup dodam Json między pojedynczymi cudzysłowami. Ale po renderowaniu i zapisywaniu wynikowego szablonu otrzymuję 'data-attr =" {"data": "wartość"} "' ale oczekuję 'data-attr = '{" data ":" wartość "}'' – MatthiasLaug