2016-09-02 5 views
0

Я могу получить значение атрибута элемента по Xpath, но как получить все имена атрибутов?Есть ли способ получить имена атрибутов элемента по Xpath?

пример:

# there is an element 
'<img src="http://fakesrc" alt="pic name"></img>' 
i = <Element img at 0x102622cb0> 

In [10]: i.xpath("//img/@src") 
Out[10]: ['http://fakesrc'] 

In [11]: i.xpath("//img/@*") 
Out[11]: ['http://fakesrc', 'pic name'] 

Как я могу получить Наименование ЦСИ/альт двутавровый?

+0

Использование '@ *' должно предоставить вам все атрибуты. Я думаю, ваша проблема в том, что при отображении их вы видите только значение. Вам нужно будет итерации возвращенной коллекции и получить свойство 'name' – Phil

+0

Действительно, я могу получить имена, итерации результата, но, похоже, нет прямого пути для завершения этой работы. – kagb

ответ

1

В зависимости от того, хотите ли вы включить префиксы пространства имен или нет, вы можете выбрать один из следующих двух вариантов в XPath 2.0:

//@*/local-name() 
//@*/name() 

Выбрать другой начальный узел контекста, который соответствует вашим потребностям и see the specifications для получения дополнительной информации ,

С XPath 1.0 вышеуказанное не представляется возможным. Следующие делает, но отображает только атрибут одного атрибута, даже если его несколько.

local-name(//@*) 
name(//@*) 
+0

В lxml (Python), i.xpath ("name (// img/@ *)") Я получил только первое имя атрибута ... Результатом является 'src' вместо ['src', 'alt'] – kagb

+0

Это потому, что в Python вы в значительной степени ограничены XPath 1.0. – Markus

+0

Итак, теперь я повторяю результат // @ *, чтобы получить имена атрибутов, неохотно принятые. – kagb

Смежные вопросы