2016-09-02 31 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'] 

は、どのように私は私の名はsrc/Altキーを入手できますか?

+0

'@ *'を使用すると、すべての属性を取得する必要があります。私はあなたの問題は、それらを表示するとき、あなたは価値を見ているということだと思います。返されたコレクションを反復して 'name'プロパティを取得する必要があります – Phil

+0

実際には、結果を反復して名前を取得できますが、このジョブを終了する直接的な方法はないようです。 – kagb

答えて

1

あなたが名前空間接頭辞を含めるかどうしたいかどうかに応じて、あなたは、XPath 2.0に以下の2つのオプションから選択することができます。

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

は、より多くの情報のためにあなたのニーズやsee the specificationsに合った異なる初期コンテキストノードを選択します。 。

XPath 1.0の場合、上記は不可能です。次のになりますが、複数の属性がある場合でも、1つの属性の属性名のみが表示されます。

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

lxml(Python)では、i.xpath( "name(// img/@ *)")最初の属性名のみを取得しました...結果は['src'、 'alt']ではなく 'src' – kagb

+0

これは、PythonではXPath 1.0にかなり制限されているからです。 – Markus

+0

これで// @ *の結果を反復して属性名を取得しますが、慎重に受け入れられます。 – kagb

関連する問題