Разбор XML с SAX в Java, без учета регистра. - PullRequest
5 голосов
/ 30 июля 2011

Я могу нормально разбирать xml с помощью SAXParserFactory на Java, НО в некоторых файлах, присутствуют некоторые строчные атрибуты, такие как linear3D="0.5" и т. д.

хотелось бы как-нибудь сделать

attributes.getValue(attr)

без учета регистра, так что attributes.getValue("linear3d") возвращает "0.5".

Одним из решений было бы сначала прочитать файл в виде строки, преобразовать его в строчные, а затем проанализировать, поскольку в этом типе xml нет никакой двусмысленности. Однако можно ли сделать это проще, добавив какой-либо флаг к фабрике или аналогичный?

1 Ответ

4 голосов
/ 14 ноября 2011

Вместо преобразования всего файла в нижний регистр лучше использовать следующий подход. Это перебирает все атрибуты выбранного тега и конкурирует с ним, игнорируя регистр.

Внутри реализации DefaultHandler напишите следующий метод

private String getValueIgnoreCase(Attributes attributes, String qName){
    for(int i = 0; i < attributes.getLength(); i++){
        String qn = attributes.getQName(i);
        if(qn.equalsIgnoreCase(qName)){
            return attributes.getValue(i);
        }
    }
    return null;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...