轉載請標明出處:
https://dujinyang.blog.csdn.net/article/details/99644824
本文出自:【奧特曼超人的博客】
若是xml文件解析帶了冒號的屬性,通常都是要特別處理,這裏是命名空間,N年前遇到過一次忘記記錄,後來也忘了,此次再記錄下。java
解決了,記錄下,分享給你們,百度到的都是沒有任何用的,這裏須要解析的是屬性。android
DOM4J 能夠用,可是便於項目的輕量級,糾結了後,此次使用JDOM 。segmentfault
之前使用的是正常節點的xml,如今是android的一些配置文件,因此以後出現一系列異常,好比:JDOM cannot handle metadata attributes with namespace prefix
等等……app
中間百度谷歌了一陣,沒有結果,也看了XPath、Jaxen、XNode、XDocument等等,爲什麼這麼複雜還回去不到,已經獲取到根節點的element了,想了下,jdom應該有考慮帶解析冒號的,有的能夠@代替,但jdom試了好久,沒有結果。dom
最後仍是分析了源代碼好久才發現了問題:
既然咱們須要的是帶冒號的節點屬性,那確定是須要制定NameSpace命名空間的,不須要靠 XPATH
或者 jaxen
的,否則它就是默認的命名空間了。ui
因此這裏只須要指定一下就能夠:spa
Namespace type=Namespace.getNamespace("android","http://schemas.android.com/apk/res/android"); System.out.println(ele.getAttributeValue("name",type));
XML文件:.net
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:compileSdkVersion="29" android:compileSdkVersionCodename="6.2-2438415" android:installLocation="auto" package="com.dujinyang.xxxx" platformBuildVersionCode="23" platformBuildVersionName="6.2-2438415"> <uses-feature android:glEsVersion="0x000520000"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> <uses-permission android:name="android.permission.READ_LOGS"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/> <uses-permission android:name="android.permission.GET_TASKS"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/> <application android:allowBackup="true" android:banner="@drawable/app_banner" android:debuggable="false" android:hasCode="true" android:icon="@drawable/app_icon" android:isGame="true" android:label="immqy" android:largeHeap="true" android:name="com.dujinyang.xxxx" android:theme="@style/UnityThemeSelector"> <activity android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize" android:icon="@drawable/app_icon" android:label="immqy" android:launchMode="singleTop" android:name="com.immqy.3d.activity.UnityMainActivity" android:screenOrientation="landscape"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> <category android:name="android.intent.category.LEANBACK_LAUNCHER"/> </intent-filter> </activity> <meta-data android:name="unity.build-id" android:value="abc53v45wtw5aasdfg"/> <meta-data android:name="unity.splash-mode" android:value="1"/> <meta-data android:name="unity.splash-enable" android:value="true"/> <meta-data android:name="android.max_aspect" android:value="3"/> <meta-data android:name="POOLSDK_CHANNEL_ID" android:value="5201314"/> <meta-data android:name="POOLSDK_CUSTOM_ID" android:value="{}"/> <activity android:configChanges="keyboardHidden|orientation|screenSize" android:launchMode="singleTask" android:name="com.DUJINYANG.sdk.view.WebViewActivity" android:screenOrientation="portrait"/> <service android:exported="true" android:name="com.ch.sys.sdk.service.FloatViewService"/> <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="com.KARL.sdk.H5WebViewActivity" android:screenOrientation="portrait"/> <meta-data android:name="SBSBSB" android:value="67329"/> </application> </manifest>
聯繫方式請看首頁,若是你們有 疑難雜症 的能夠看這裏:《Bug 疑難雜症 | 不分語言》debug
|| 版權聲明:本文爲博主杜錦陽原創文章,轉載請註明出處。3d