Intereting Posts
Установите марку в стиле и примените этот стиль к TextView программно Получите день рождения для каждого контакта в приложении Android Повторяют ли соединения Apache DefaultHttpClient (Android) и NSURLConnection (iOS) неудачные соединения со старыми версиями протокола? Установить прогресс диалога Недопустимое исключение аргумента в диалоговом окне андроида Быстрая отмена / повтор с использованием шаблона памяти / команды? Обновлен до AppCompat v22.1.0 и теперь получает ошибку «удалить атрибут» Как отправить SMS-сообщение в Android Kitkat из приложения, отличного от приложения по умолчанию, без написания SMS-провайдера Как расширить зону касания вида IllegalArgumentException: тип окна не может быть изменен после добавления окна Как изменить предварительный просмотр панели запуска виджета? Build.xml version.tag для системных инструментов 14, синтаксис? Отображение обеих сторон монеты, переворачиваемой с использованием стандартной анимации Android StartVoiceRecognition с Bluetooth-гарнитурой не работает Android: прекратите масштабирование изображения

Пользовательский XML-парсер Android не разрешает пространство имен android

Я хотел бы получить правильный способ разбора пользовательских тегов Android с помощью XmlResourceParser. Я использую Eclipse 3.6 с подключаемым модулем android, и мне хотелось бы, чтобы некоторые атрибуты, такие как name были расширены с помощью полной строки из strings.xml .

Вот index.xml который анализируется в папке res/xml/ .

 <?xml version="1.0" encoding="utf-8"?> <Index xmlns:android="http://schemas.android.com/apk/res/android"> <Sheet shortName="o_2sq" android:name="@string/o_2sq" instructions="" /> </Index> 

Вот файл strings.xml в папке res/values/

 <?xml version="1.0" encoding="utf-8"?> <resources> <string name="o_2sq">Organize two squares</string> </resources> 

И фрагмент кода, который анализирует первый index.xml с помощью XmlResourceParser:

 String name = xpp.getAttributeValue(null, "android:name"); String shortName = xpp.getAttributeValue(null, "shortName"); 

Имя переменной содержит null , но shortName содержит "o_2sq" . Я также пробовал следующее без успеха:

 String name = xpp.getAttributeValue("android", "name"); 

Каков правильный способ написания предложения, чтобы имя переменной содержало "Organize two squares" ?

Solutions Collecting From Web of "Пользовательский XML-парсер Android не разрешает пространство имен android"

Попробуй это:

 String name = xpp.getAttributeValue("http://schemas.android.com/apk/res/android", "name"); 

Лучшее решение, которое я нашел, чтобы преодолеть эту проблему.

 String s = xpp.getAttributeValue("http://schemas.android.com/apk/res/android", "name"); String name = null; if(s != null && s.length() > 1 && s.charAt(0) == '@') { int id = Integer.parseInt(s.substring(1)); name = getString(id); } else { name = ""; } 
 final String NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android"; final int VALUE_NOT_SET = -1; int resId = parser.getAttributeResourceValue(NAMESPACE_ANDROID, "name", VALUE_NOT_SET); String value = null; if (VALUE_NOT_SET != resId) { value = context.getString(resId); } 

Я думаю, что приведенный выше код может вам помочь.