Выберите слово в XML в Кислороде Автор - PullRequest
0 голосов
/ 04 мая 2020

Я хочу выбрать слово в XML (Автор кислорода). Кислород не имеет специальной функции для этого, и я пытаюсь написать функцию для этого. Если текущий тег имеет несколько тегов, мой код не работает должным образом. Где я ошибся?

     for (Object i : arrFind) {
            if (textContains.contains(i.toString())) {
                start = an.getStartOffset();
                end = an.getEndOffset();
                authorAccess.getEditorAccess().select(start, end);
                authorAccess.getEditorAccess().selectWord();
                selectedEnd = authorAccess.getEditorAccess().getSelectionEnd();
                authorAccess.getEditorAccess().select(
                        selectedEnd - (textContains.length() - textContains.indexOf(i.toString())), selectedEnd);
                inst = authorAccess.getEditorAccess().getSelectedText();
                if (inst.startsWith(" ")) {
                    authorAccess.getEditorAccess().select(
                            selectedEnd - (textContains.length() - textContains.indexOf(i.toString())) + 1,
                            selectedEnd - (textContains.length() - textContains.indexOf(i.toString())) + 1);
                } else {
                    authorAccess.getEditorAccess().select(
                            selectedEnd - (textContains.length() - textContains.indexOf(i.toString())),
                            selectedEnd - (textContains.length() - textContains.indexOf(i.toString())));
                }
                int currentOffset = authorAccess.getEditorAccess().getCaretOffset();
                String startText = "";
                String endText = "";
                int indexStartOffset = 0;
                int indexEnd = 0;
                int indexStart = 0;
                int resultEndOffset = end - currentOffset;
                int resultStartOffset = currentOffset - start;
                try {
                    endText = authorAccess.getDocumentController().getFilteredText(currentOffset, resultEndOffset);
                } catch (BadLocationException e1) {
                    e1.printStackTrace();
                }
                if (endText.contains(" ")) {
                    indexEnd = endText.indexOf(" ");
                } else {
                    indexEnd = resultEndOffset;
                }
                try {
                    startText = authorAccess.getDocumentController().getFilteredText(start, resultStartOffset);
                } catch (BadLocationException e) {
                    e.printStackTrace();
                }
                if (startText.contains(" ")) {
                    indexStartOffset = startText.lastIndexOf(" ");
                }
                indexStart = startText.length() - indexStartOffset;
                if (inst.startsWith(" ")) {
                    authorAccess.getEditorAccess().select(currentOffset - indexStart + 1, currentOffset + indexEnd);
                } else {
                    authorAccess.getEditorAccess().select(currentOffset, currentOffset + indexEnd);
                }
            }
...