Android보기에서 자주 발생하는 문제, XML 구문 분석 오류 : 바인딩되지 않은 접두사


296

안드로이드보기에서 자주 문제가 발생 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>

9
게시 된 모든 답변을 확인하십시오. 그들은 모두 유효합니다. 문제는 XML 네임 스페이스와 끔찍하게 잘못 될 수있는 몇 가지 방법입니다.
whitey04

가장 먼저, 첫 줄에서 모두 '압설'주석을 잊어 버린 경우 레이아웃에 문제가 있음을 알지 못할 것입니다 (예 : <? xml version = "1.0"encoding = "utf-8"? > <!-suppress ALL->)
Mike

답변:


555

이것이 발생할 수있는 몇 가지 이유 :

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"


"첫 번째 노드"는 무엇을 의미합니까? 원래 질문에서 TextView입니까?
David Doria

1
... 그리고 새로운 Google 플레이의 AdMob에서이다 : XMLNS : 광고 = " schemas.android.com/apk/res-auto "
user1010160

고마워요,이 라인의 xmlns을 추가하여 경우 3 내 문제를 해결 : 광고 = " schemas.android.com/apk/lib/com.google.ads "대답 +1
Shylendra Madda을

101

여기에 표시되지 않기 때문에 별도의 답변을 추가하겠습니다. Pentium10이 요청한 것은 100 %가 아니지만 검색을 통해 여기서 끝났습니다.Error parsing XML: unbound prefix

와 같은 AdMob 광고에 맞춤 매개 변수를 사용 ads:adSize하고 있지만 추가하지 않은 것으로 나타났습니다.

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

레이아웃에. 내가 추가하면 훌륭하게 작동했습니다.


63

나는이 같은 문제가 있었다.

접두사 (android : [whatever])의 철자가 올바른지, 올바르게 작성했는지 확인하십시오. 줄의 경우 xmlns:android="http://schemas.android.com/apk/res/android" 전체 접두어가 xmlns:android있고 철자가 올바른지 확인하십시오 . 다른 접두사와 동일-철자가 올바른지 확인하십시오 android:[name]. 이것이 내 문제를 해결 한 것입니다.


1
예, 제 경우에는 오류가 androi : src = "@ drawable / half"에 의해 발생했습니다. 분명히 잘못되었습니다!
IgorGanapolsky

예, 같은 문제가있었습니다. "xmln :"부분도 빠졌습니다.
user1032613

32

언급했듯이 올바른 네임 스페이스 를 지정해야 합니다 . 네임 스페이스가 잘못된이 오류도 표시됩니다.

<?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"

XML은 " android:"네임 스페이스가 무엇인지 알지 못하므로 오류 메시지는 "android :"로 시작하는 모든 것을 나타 냅니다.

xmlns:android 그것을 정의합니다.


23

이 오류는 다음과 같이 정의되지 않은 접두사를 사용하는 경우에 발생할 수 있습니다.

<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"


2
이것은 나를 위해 그것을했다. 그것은 잘못 된 유형이었습니다 : android : layout_weight 대신에 anrdoid : layout_weigth를 입력했습니다.
Yahel

Nguyen, XYZ를 정의하는 방법? 감사합니다
Anatoliy Shuba

10

에 대한 언 바운드 접두사 오류 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

나를 위해, 나는 네 번째 줄에서 안드로이드 철자를 잘못 입력했지만 여기에 첫 번째 줄에 "언 바운드 접두사"오류가 발생했습니다.

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
anrdoid:fillViewport="true"
>

7

나는 같은 문제가 있었고 해결책은 android : tools를 첫 번째 노드에 추가하는 것이 었습니다. 제 경우에는 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">

예, 도구를 참조하지만 도구의 네임 스페이스를 추가하지 않으면이 정보도 얻을 수 있습니다.
Dr. Ferrol Blackmon

3

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"

3

여기에는 많은 해결책이 있지만 실제로 문제의 근본 원인을 설명하지는 않으므로 여기로 이동하십시오.

이 같은 속성을 볼 때 부분은 접두사, 속성의 형식은 여기에있다 . : XML에서, 네임 스페이스 및 접두사는 우리가 이름은 같지만 같은 다른 접두사와 두 가지 속성을 가질 수 있습니다 예를 들어 이름이 충돌하지 않도록하는 방법입니다 및 .android:layout_width="match_parent"androidPREFIX:NAME="VALUE"a:a="val"b:a="val"

같은 접두사를 사용하는 것은 androidapp또는 다른 사용자의 사용하여 네임 스페이스를 정의해야합니다xmlns 속성.

따라서이 문제가있는 경우 네임 스페이스가 정의되지 않은 접두사를 찾으십시오. tools:...도구가있는 경우 네임 스페이스를 추가 해야하는 경우 app:...속성이있는 경우 추가해야합니다xmlns:app="http://schemas.android.com/apk/res-auto" 있는 경우 루트 요소에

더 읽을 거리 :

XML 네임 스페이스 간단한 설명

W3의 XML 네임 스페이스


2

이 오류는 일반적으로 xmlns:mm올바르게 포함하지 않은 경우 일반적으로 첫 번째 코드 줄에서 발생합니다.

나를 위해 ..

xmlns : mm = "http://millennialmedia.com/android/schema"

내가 코드의 첫 줄에서 놓친

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:mm="http://millennialmedia.com/android/schema"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_marginTop="50dp"
android:layout_marginBottom="50dp"
android:background="@android:color/transparent" >

1

내 경우에는 위의 xml 네임 스페이스 문제로 인해 오류가 발생하지 않았습니다. 대신 android:id속성 의 위치였습니다 . 특정 요소의 선언에서 첫 번째 항목이어야했습니다.

그래서 이거:

<TextView android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:id="@+id/bottomtext" 
      android:singleLine="true" />

... 다음과 같이 읽을 필요가 있습니다.

<TextView android:id="@+id/bottomtext" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content"
      android:singleLine="true" />

1

이 모든 것 외에도이 오류가 발생하는 시나리오도 있습니다.

사용자 또는 라이브러리 프로젝트가 사용자 정의 속성 int attr.xml을 정의 할 때 namespace 속성을 정의하지 않고 레이아웃 파일에서 이러한 속성을 사용합니다.

일반적으로 레이아웃 파일의 헤더에이 네임 스페이스 정의를 사용합니다.

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

그런 다음 파일의 모든 속성이

android:ATTRIBUTE-NAME

attirbute의 일부가 android : ATTRIBUTE-NAME과 같은 Android 이외의 것으로 시작하지 않는 경우 식별해야합니다.

temp:ATTRIBUTE-NAME

이 경우 일반적으로 다음을 포함하여이 "temp"를 네임 스페이스로 사용합니다.

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

1

루트 태그에 적절한 네임 스페이스를 추가하면됩니다. xmlns : android = "http://schemas.android.com/apk/res/android"Android 이름은이 네임 스페이스에 선언되며 클래스 또는 패키지 가져 오기와 동일합니다.


0

안드로이드를 철자가 틀렸을 때 일반적으로 나에게 일어난다-나는 단지 andorid를 타자를 치거나 똑같이 썼다. 특히 많은 시간 동안 프로그래밍 한 후에 첫눈에 분명하지 않기 때문에 "android"를 하나씩 검색하고 검색이 하나를 건너 뛰는 지 확인한다 태그-그렇다면 자세히 살펴보고 오타가있는 곳을 봅니다.


0

Xamarin 에서이 오류가 발생했습니다.

  <android.support.v7.widget.CardView  
    android:layout_width="match_parent"  
    android:layout_height="wrap_content"  
    card_view:cardElevation="4dp"  
    card_view:cardCornerRadius="5dp"  
    card_view:cardUseCompatPadding="true">  
  </android.support.v7.widget.CardView>

android.support.v7.widget.CardView의 nuget 패키지를 설치하지 않고 레이아웃 파일에

해당 nuget 패키지를 설치하면 문제가 해결되었습니다. 그것이 도움이되기를 바랍니다. 나는 목록의 어느 곳 에서도이 답변을 보지 못했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.