Парсинг XML с пространствами имен с помощью $ jQuery () .find

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

21
задан Ilya Palkin 24 March 2015 в 18:42
поделиться

3 ответа

Используйте обратную косую черту, которой саму нужно оставить так, JavaScript не ест ее:

$(this).find("geo\\:lat").text();
32
ответ дан 29 November 2019 в 20:13
поделиться

Это не просто имя элемента. Это полное имя, означающее, что это имя, которое конкретно относится к типу элемента в пространстве имен. Имя типа элемента - «lat», а префикс пространства имен - «geo».

В данный момент jQuery не очень хорошо справляется с пространствами имен, подробности см. В , ошибка 155 .

Прямо сейчас, в качестве обходного пути, вы должны иметь возможность выбирать эти элементы только с локальным именем:

$(this).find("lat").text();

Если вам нужно различать типы элементов с одинаковым локальным именем, то вы можете используйте filter():

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("lat").filter(function() { return this.namespaceURI == NS; }).text();

Редактировать: моя ошибка, у меня сложилось впечатление, что патч уже приземлился. Используйте предложение Адама для селектора и filter(), если вам тоже нужно пространство имен:

var NS = "http://example.com/whatever-the-namespace-is-for-geo";
$(this).find("geo\\:lat").filter(function() { return this.namespaceURI == NS; }).text();
11
ответ дан 29 November 2019 в 20:13
поделиться

если у вас есть проблема с селектором jquery , когда Chrome или webkit не выбирают его, попробуйте

$(this).find('[nodeName=geo:lat]').text();

таким образом он работает во всех браузерах

4
ответ дан 29 November 2019 в 20:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: