Мне нужно прочитать строку и получить из нее определенное значение - PullRequest
0 голосов
/ 17 июня 2020

Это моя строка

String response =  <?xml version="1.0" encoding="UTF-8"?>
<response>
  <sid>1592286483.599</sid>
</response>

Я хочу извлечь из этого значение sid с помощью этого кода


if (response.contains("sid")) {
            System.out.println("*****************");
            String sid = response.split(">")[2].split("<")[2];
            System.out.println("%%%%%%%%%%%%%%%%%%%%%%%" + sid);
    }



Мне нужно получить значение sid из строки. Используя этот код, он показывает

java .lang.ArrayIndexOutOfBoundsException: 2 error

Ответы [ 2 ]

1 голос
/ 17 июня 2020

Я бы использовал String#replaceAll, если вам нужно избегать использования парсера HTML:

String sid = response.replaceAll("(?s).*<sid>(.*?)</sid>.*", "$1");
System.out.println(sid);

Это печатает: 1592286483.599

При этом, как говорится, это может быть предпочтительнее чтобы вы использовали парсер HTML, что позволит избежать вероятности того, что вышеперечисленное пойдет не так, например, из-за вложенных тегов или более чем одного <sid> в тексте.

1 голос
/ 17 июня 2020

Первый индекс должен быть 3, а второй индекс должен быть 0.

String sid = response.split(">")[3].split("<")[0];

Тем не менее, вы можете рассмотреть возможность использования парсера XML.

...