Используя пакет elementtree в nodejs, я пытаюсь проверить существование определенного xml-атрибута в XML-файле (в частности, манифест android файл).Поиск выражения xpath с помощью двоеточия в имени атрибута name вызывает (node.js elementtree module)
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>
Вы пробовали экранировать двоеточие '\:'? – mVChr
Да, никакого эффекта. – wildabeast