Стоп!
Существует потенциально серьезная проблема с этим кодом, поскольку он игнорирует кодировку символов, указанную в String
(по умолчанию UTF-8). При вызове String.getBytes()
кодировка платформы по умолчанию используется для кодирования символов Unicode в байты. Таким образом, синтаксический анализатор может думать, что он получает данные UTF-8, когда на самом деле он получает EBCDIC или что-то еще & hellip; не красиво!
Вместо этого используйте метод синтаксического анализа, который принимает InputSource, который может быть создан с помощью Reader, например так:
import java.io.StringReader;
import org.xml.sax.InputSource;
…
return builder.parse(new InputSource(new StringReader(xml)));
Это может показаться не таким уж большим делом, но незнание проблем кодировки символов приводит к коварному коду, похожему на y2k.