nodejsのelementtreeパッケージを使用して、xmlファイル(具体的にはandroidマニフェストファイル)に特定のxml属性が存在することを確認しようとしています。
var manifestTxt = fs.readFileSync('AndroidManifest.xml', 'utf-8'),
manifestDoc = new et.ElementTree(et.XML(manifestTxt)),
expected = 'application/activity[@android:name="com.whatever.app"]';
test.ok(manifestDoc.find(expected));
次の例外が発生します。
node_modules/elementtree/lib/elementpath.js:210
throw new SyntaxError(token, 'Invalid attribute predicate');
^
Error: Invalid attribute predicate
属性名のコロンが気に入らないようですが、コロンがないと検索は一致しません。名前空間を間違って処理していると思いますが、適切な方法を見つけることができません。
編集これが私が検索しているサンプルxmlです:
<?xml version='1.0' encoding='utf-8'?>
<manifest ... xmlns:android="http://schemas.android.com/apk/res/android">
<application android:debuggable="true" android:icon="@drawable/icon" android:label="@string/app_name">

<activity android:label="@string/app_name" android:name="com.whatever.app">

<intent-filter>
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="5" />
</manifest>