Проблема кодирования jdom2 в выводе XML UTF-8 - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь обновить некоторые значения атрибута существующего XML-файла, используя jdom2.При создании файла XML возникает проблема с кодировкой utf8.

Значение атрибута: "1 student Noun".

Но значение, которое я вижу в выводе:

1	student	Noun

Код, который я написал, показан ниже:

SAXBuilder builder = new SAXBuilder();
            Document document = document = builder.build(filePath);

            Element root = document.getRootElement();

            for(Element sentenceElement : root.getChildren("sentence")){

                String transcriptionText = "";

                 for(Element transcriptionElement : sentenceElement.getChildren("transcription")){

                     for(Element wordElement : transcriptionElement.getChildren("word")){
                            transcriptionText += " "+wordElement.getAttributeValue("text");
                     } 

                     transcriptionParser = ParserUtil.getResponse(transcriptionText);
                     transcriptionElement.getAttribute("text").setValue(transcriptionText);
                     transcriptionElement.getAttribute("parser").setValue(transcriptionParser);
                 }

                 for(Element translationElement : sentenceElement.getChildren("translation")){

                        translationParser = getResponse(translationElement.getAttributeValue("text"));
                        translationElement.getAttribute("parser").setValue(translationParser);

                 }
            }

            Format format = Format.getPrettyFormat();

            XMLOutputter xmlOutput = new XMLOutputter(format);


            /*try (OutputStream out = new FileOutputStream(filePath)) {
               xmlOutput.output(document, out);
              }catch(Exception e){
                 e.printStackTrace();
              }
            }*/

            xmlOutput.output(document, Files.newBufferedWriter(Paths.get(filePath),StandardCharsets.UTF_8));

Я использовал оба варианта:

xmlOutput.output(document, Files.newBufferedWriter(Paths.get(filePath),StandardCharsets.UTF_8));

и

    try (OutputStream out = new FileOutputStream(filePath)) {
         xmlOutput.output(document, out);
   }catch(Exception e){
         e.printStackTrace();
   }

Но нетиз них были решены проблемы.Как решить проблему?

1 Ответ

0 голосов
/ 03 февраля 2019

Строка "1 student Noun", очевидно, содержит символы табуляции между словами.

Так что, если вывод XML содержит 1	student	Noun, это прекрасно.Символы табуляции имеют значение Unicode 9, а 	 - это правильный объект XML для представления этого.

...