частые проблемы, возникающие в представлении Android, Ошибка синтаксического анализа XML: несвязанный префикс - PullRequest
286 голосов
/ 08 февраля 2010

У меня частая проблема в представлении Android, Error parsing XML: unbound prefix on Line 2.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:orientation="vertical" android:id="@+id/myScrollLayout" 
android:layout_width="fill_parent"  android:layout_height="wrap_content">
    <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" 
    android:text="Family" android:id="@+id/Family" 
    android:textSize="16px" android:padding="5px" 
    android:textStyle="bold" android:gravity="center_horizontal">
    </TextView>

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent" android:layout_height="wrap_content"
        android:orientation="vertical" android:scrollbars="vertical">
        <LinearLayout android:orientation="vertical" android:id="@+id/myMainLayout" 
        android:layout_width="fill_parent"  android:layout_height="wrap_content">
        </LinearLayout>
    </ScrollView>

</LinearLayout>

Ответы [ 15 ]

531 голосов
/ 08 февраля 2010

Несколько причин, по которым это может произойти:

1) Вы видите эту ошибку с неверным пространством имен или опечаткой в ​​атрибуте. Как 'xmlns' не так, это должно быть xmlns:android

2) Первый узел должен содержать: xmlns:android="http://schemas.android.com/apk/res/android"

3) Если вы интегрируете AdMob, проверьте пользовательские параметры, такие как ads:adSize, вам нужно

xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

4) Если вы используете LinearLayout, возможно, вам придется определить инструменты:

xmlns:tools="http://schemas.android.com/tools"

100 голосов
/ 16 декабря 2012

Я собираюсь добавить отдельный ответ только потому, что не вижу его здесь. Это не на 100% то, что просил Pentium10, но я остановился на поиске Error parsing XML: unbound prefix

Оказывается, я использовал пользовательские параметры для объявлений AdMob, такие как ads:adSize, но я не добавил

    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

к макету. Как только я добавил его, он отлично работал.

62 голосов
/ 20 сентября 2010

У меня была такая же проблема.

Убедитесь, что префикс (android: [что угодно]) написан правильно и написан правильно. В случае линии xmlns:android="http://schemas.android.com/apk/res/android" убедитесь, что у вас есть полный префикс xmlns:android и что он написан правильно. То же самое с любыми другими префиксами - убедитесь, что они написаны правильно и имеют android:[name]. Это то, что решило мою проблему.

30 голосов
/ 08 февраля 2010

Как вы упомянули, вам нужно указать правильное пространство имен . Вы также видите эту ошибку с неправильным пространством имен.

<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns="http://schemas.android.com/apk/res/android"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:padding="10dip">

не будет работать.

Изменение:

xmlns="http://schemas.android.com/apk/res/android"

до

xmlns:android="http://schemas.android.com/apk/res/android"

Сообщение об ошибке относится ко всему, что запускает «android:», поскольку XML не знает, что такое пространство имен «android:».

xmlns:android определяет его.

23 голосов
/ 08 декабря 2011

Эта ошибка может возникать, если вы используете неопределенный префикс, например:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TabHost
    XYZ:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >


</TabHost>

Компилятор Android не знает, что такое XYZ, поскольку он еще не определен.

В вашем случае вы должны добавить ниже определение к корневому узлу XML-файла.

xmlns:android="http://schemas.android.com/apk/res/android"

10 голосов
/ 10 февраля 2014

ошибка несвязанного префикса для Индикатор ViewPager:

Вместе со следующими тегами заголовка в вашем parentLayout:

xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

Также добавьте:

xmlns:app="http://schemas.android.com/apk/res-auto"

Это помогло мне.

9 голосов
/ 15 августа 2012

Для меня я получил ошибку "unbound prefix" в первой строке здесь, хотя у меня был орфографический недостаток android в четвертой строке.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
anrdoid:fillViewport="true"
>
7 голосов
/ 27 сентября 2012

У меня была та же проблема, и я обнаружил, что решение было добавить инструменты android: в первый узел. В моем случае это LineraLayout:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 
    android:orientation="vertical">
3 голосов
/ 24 декабря 2014

Я добавлю немного больше для новичков и для людей, как я, которые не понимают XML.

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

Перевод: любое имя тега XML, которое имеет тег с пространством имен, где blah - это пространство имен, а fubar - это тег XML. Пространство имен позволяет использовать множество различных инструментов для интерпретации XML с собственными именами тегов. Например, Intel XDK использует пространство имен intelxdk, а android использует android. Таким образом, вам нужны следующие пространства имен, или сборка выливает кровь (то есть ошибка синтаксического анализа XML: несвязанный префикс), который переводится на: Вы использовали пространство имен, но не определили его.

  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:intelxdk="http://xdk.intel.com/ns/v1"
2 голосов
/ 20 сентября 2018

ОК, здесь есть много решений, но на самом деле они не объясняют причину проблемы, поэтому мы идем:

когда вы видите такой атрибут, как android:layout_width="match_parent", часть android является префиксом, формат для атрибута здесь PREFIX:NAME="VALUE". в XML пространства имен и префиксы - это способы избежать конфликтов имен, например, у нас может быть два разных атрибута с одинаковыми именами, но разными префиксами, такими как: a:a="val" и b:a="val".

для использования префиксов, таких как android или app или любых других, вы должны определить пространство имен, используя атрибут xmlns.

поэтому, если у вас есть эта проблема, просто найдите префиксы, для которых не определено пространство имен, если у вас есть tools:..., вы должны добавить пространство имен инструментов, как предлагали некоторые ответы, если у вас есть атрибут app:..., вы должны добавить xmlns:app="http://schemas.android.com/apk/res-auto" к корневой элемент

Дальнейшее чтение:

Пространство имен XML простое объяснение

Пространства имен XML в W3

...