如何从存储为字符串的xml数据中获取属性值?

时间:2016-07-24 10:03:53

标签: php android xml xml-parsing

我有一个xml的android清单文件。假设其数据存储在字符串变量$xmldata中,如下所示: <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versioncode="13507140" android:versionname="1.35.7" package="com.google.android.apps.youtube.music" platformbuildversioncode="23" platformbuildversionname="6.0-2166767"> <uses-sdk android:minsdkversion="16" android:targetsdkversion="23"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"> <uses-feature android:name="android.hardware.screen.portrait"> <compatible-screens> <screen android:screensize="200" android:screendensity="160"> <screen android:screensize="200" android:screendensity="240"> <screen android:screensize="200" android:screendensity="320"> <screen android:screensize="400" android:screendensity="420"> <screen android:screensize="400" android:screendensity="480"> <screen android:screensize="400" android:screendensity="560"> <screen android:screensize="400" android:screendensity="640"> </screen></screen></screen></screen></screen></screen></screen></compatible-screens> </uses-feature></uses-permission></uses-sdk></manifest>

如何获取数组中的所有android:screendensity值? 这是android清单文件,因此xml结构与普通xml文件不同。 查看完整XML here

1 个答案:

答案 0 :(得分:1)

我认为你的xml是错误的。
&#34;屏幕&#34;标签应该像这样关闭:

<compatible-screens>
    <screen android:screenSize="200" android:screenDensity="160"/>
    <screen android:screenSize="200" android:screenDensity="240"/>
    <screen android:screenSize="200" android:screenDensity="320"/>
    <screen android:screenSize="400" android:screenDensity="420"/>
    <screen android:screenSize="400" android:screenDensity="480"/>
    <screen android:screenSize="400" android:screenDensity="560"/>
    <screen android:screenSize="400" android:screenDensity="640"/>
</compatible-screens>

然后,如果您使用PHP,请使用@ThW评论的解析器库。
或者我建议你使用这样的正则表达式:

preg_match_all("/screenDensity=\"(\d+)\"/", $xmldata, $result);

// $result[1]; is array of screenDensitys