我使用的是MINIDOM,但它没有提供xpath方法.
我现在正在尝试使用libxml2,但我在检索属性值时遇到问题.
我的xml的摘录如下:
<Class name="myclass1" version="0">
<Owner user-login="smagnoni"/>
</Class>
Run Code Online (Sandbox Code Playgroud)
我写了以下代码:
import libxml2
doc = libxml2.parseFile(file)
ris = doc.xpathEval('*/Class[@name="'+className+'" and @version="'+classVersion+'"]/Owner')
print str(ris[0])
Run Code Online (Sandbox Code Playgroud)
返回:
<Owner user-login="smagnoni"/>
Run Code Online (Sandbox Code Playgroud)
我如何得到"smagnoni"?用手解析绳子感觉过度劳累.但我没有找到与.getAttribute("attribute-name")minidom 相媲美的方法.
任何人都可以建议正确的方法或指导我文件?
.prop('user-login') 应该管用:
import libxml2
import io
content='''\
<Class name="myclass1" version="0">
<Owner user-login="smagnoni"/>
</Class>
'''
doc = libxml2.parseMemory(content,len(content))
className='myclass1'
classVersion='0'
ris = doc.xpathEval('//Class[@name="'+className+'" and @version="'+classVersion+'"]/Owner')
elt=ris[0]
print(elt.prop('user-login'))
Run Code Online (Sandbox Code Playgroud)
产量
smagnoni
Run Code Online (Sandbox Code Playgroud)
for owner in ris:
for property in owner.properties:
if property.type == 'attribute':
print property.name
print property.content
Run Code Online (Sandbox Code Playgroud)