XPath - Найдите элементы пространством имен атрибута

Изменение чего-либо в файле build.gradle будет повторно синхронизировать все снова, и ошибка исчезнет. Для меня я изменил minSdkVersion, и он сработал. Не беспокойтесь, это может произойти, если система потерпела крах или Android Studio не была закрыта должным образом.

20
задан Gareth 10 February 2009 в 00:07
поделиться

4 ответа

Использование:

  //*[namespace-uri()='yourNamespaceURI-here'
     or
      @*[namespace-uri()='yourNamespaceURI-here']
     ]

предикат два условия являются или-редактором с оператором XPath or.

выражение XPath таким образом выбирает любой элемент что любой :

  • принадлежит указанному пространству имен

или

  • , имеет атрибуты, которые принадлежат указанному пространству имен
25
ответ дан 30 November 2019 в 00:40
поделиться

Не уверенный, если это - то, что Вы имеете в виду, но только удаляя 1 символ в Вашем XPath, Вы получаете все элементы в определенном пространстве имен:

//*[namespace-uri()='http://foo.example.com']
4
ответ дан 30 November 2019 в 00:40
поделиться

Вы могли попробовать

//*[namespace-uri()='http://foo.example.com' or @*[namespace-uri()='http://foo.example.com']]

, Это даст Вам элемент foo:bar и штучка элемента (если Вы изменитесь tal:quux на foo:quux в Ваших данных XML):

<?xml version="1.0" encoding="UTF-8"?>
<root xmlns:foo="http://foo.example.com" xmlns:tal="xxx">
  <foo:bar quux="value">Content</foo:bar>
  <widget>Content</widget>
  <doodah foo:quux="value">Content</doodah>
</root>

это, что Вы хотите?

РЕДАКТИРОВАНИЕ : Спасибо за определение ошибки атрибута, исправленной теперь.

0
ответ дан 30 November 2019 в 00:40
поделиться

Ваше выражение XPath почти прекрасно. Вместо того, чтобы просить атрибуты "" просят элементы" ", и это должно работать:

"//*[namespace-uri()='http://foo.example.com']"
0
ответ дан 30 November 2019 в 00:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: