これは、私が使用しているドキュメントのサンプルです。
<idx:index xsi:schemaLocation="http://www.belscript.org/schema/index index.xsd" idx:belframework_version="2.0">
<idx:namespaces>
<idx:namespace idx:resourceLocation="http://resource.belframework.org/belframework/1.0/namespace/entrez-gene-ids-hmr.belns"/>
<idx:namespace idx:resourceLocation="http://resource.belframework.org/belframework/1.0/namespace/hgnc-approved-symbols.belns"/>
<idx:namespace idx:resourceLocation="http://resource.belframework.org/belframework/1.0/namespace/mgi-approved-symbols.belns"/>
次のコードを使用して、「namespace」という名前のすべてのノードを取得できます。
tree = etree.parse(self.old_files)
urls = tree.xpath('//*[local-name()="namespace"]')
namespace
これは、3 つの要素のリストを返します。idx:resourceLocation
しかし、属性内のデータにアクセスしたい場合はどうすればよいでしょうか? これは、 XPath ドキュメントをガイドとして使用して、それを行うための私の試みです。
urls = tree.xpath('//*[local-name()="namespace"]/@idx:resourceLocation="http://resource.belframework.org/belframework/1.0/namespace/"',
namespaces={'idx' : 'http://www.belscript.org/schema/index'})
私が欲しいのは、で始まる属性を持つすべてのノードですhttp://resource.belframework.org/belframework/1.0/namespace
。したがって、サンプル ドキュメントでは、resourceLocation
属性内の文字列のみが返されます。残念ながら、構文が正しくないため、ドキュメントから適切な構文を導き出すのに苦労しています。ありがとうございました!