Вот пример из док Я работаю с:XPath - возвращает все узлы с определенным рисунком строки
<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"/>
я могу получить все узлы с именем «пространства имен» со следующим кодом:
tree = etree.parse(self.old_files)
urls = tree.xpath('//*[local-name()="namespace"]')
Это вернет список элементов 3 namespace
. Но что, если я хочу получить данные в атрибуте idx:resourceLocation
? Вот моя попытка сделать это, используя XPath docs в качестве руководства.
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
. Поэтому в образце doc он возвращает мне только те строки в атрибуте resourceLocation
. К сожалению, синтаксис не совсем прав, и у меня возникают проблемы с получением правильного синтаксиса из документации. Спасибо!
Да! Большое спасибо, именно то, что я искал. – Houdini