Xpath для выбора значения атрибута родного брата с пространством имен - PullRequest
5 голосов
/ 01 апреля 2011

Я пытаюсь получить XPath, определенный для возврата значения uniqueappversionid из следующего XML:

<?xml version="1.0" encoding="UTF-8"?>
<manifest package="air.com.vzw.Foo" 
          android:versionCode="0" 
          android:versionName="0.0.0" 
          android:installLocation="auto"
          xmlns:android="http://schemas.android.com/apk/res/android">
    <application android:label="FooAIR">
        <meta-data android:name="autoOrients" android:value="true" />
        <meta-data android:name="fullScreen" android:value="false" />
        <meta-data android:name="uniqueappversionid" 
                   android:value="b1e1bfa8-20b4-4724-a9c3-34b79bc50b8d" />
        <meta-data android:name="initialcontent" android:value="FooAIR.swf" />
    </application>
</manifest>

Более конкретно, мне нужно получить значение атрибута android:valueиз элемента meta-data с android:name, равным uniqueappversionid.

Ответы [ 3 ]

3 голосов
/ 02 апреля 2011

С префиксом a, связанным с http://schemas.android.com/apk/res/android пространством имен:

/manifest
   /application
      /meta-data[@a:name='uniqueappversionid']
         /@a:value
2 голосов
/ 02 апреля 2011

Хорошо, возможно, есть лучший подход, но это то, что я в итоге использовал:

//meta-data[@*='uniqueappversionid']/@*[2]

Буду очень признателен за предложения по улучшению этого!

0 голосов
/ 02 апреля 2011

Ваш вопрос имеет отношение как к среде, в которой вы выполняете запрос XPath, так и к содержанию самого запроса XPath.Например, вот как вы это сделаете в XSLT:

<stylesheet version="1.0"
            xmlns="http://www.w3.org/1999/XSL/Transform"
            xmlns:android="http://schemas.android.com/apk/res/android">
  <template match="/">
    <value-of select="//meta-data[@android:name = 'uniqueappversionid']/@android:value" />
  </template>
</stylesheet>

Средство настройки пространства имен здесь - через атрибуты xmlns в элементах XSLT, в которые вложен запрос XPath.В типичной среде императивного языка программирования вам, скорее всего, придется настраивать псевдонимы пространства имен путем параметризации объектов XML, для которых вы оцениваете запрос.Чтобы указать ответ для такой среды, вам нужно получить конкретную информацию о платформе XML.

...