Simplexml 使用命名空间获取属性

2022-01-10 00:00:00 xml-parsing php simplexml

我有一个带有命名空间属性的 XML 文档.XML 看起来像:

I have an XML Document which has attributes with a namespace. The XML looks like:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sunil.tweet"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="16" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.sunil.tweet.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

如何从 activity 标签中提取 android:name 属性?

How can I extract the android:name attribute from the activity tag?

推荐答案

获取属性时需要使用命名空间.android 命名空间定义为:

You need to use the namespace when getting the attribute. The android namespace is defined as:

http://schemas.android.com/apk/res/android

所以你需要将它传递给 attributes() 方法,像这样:

So you need to pass that to the attributes() method, like this:

$xml = simplexml_load_string($xmlStr);

echo (string) $xml->application->activity->attributes('http://schemas.android.com/apk/res/android')->name;

输出

com.sunil.tweet.MainActivity

com.sunil.tweet.MainActivity

键盘演示

相关文章