解析命名空间XML时出现问题。显示空值。用Python

解析命名空间XML时出现问题。显示空值。用Python,python,xml-parsing,lxml,xml-namespaces,Python,Xml Parsing,Lxml,Xml Namespaces,我的XML文件可用。虽然我可以从这个文件中获取根节点及其子节点。但是,我无法得到我需要的。我想获得方法的内容 我尝试了xml和lxml包 当我使用以下命令时 tree = lxml.etree.parse(fname) #fname is xml filename root= tree.getroot() print(root[5].findall("ce:section-title",root.nsmap) 它只给了我空[]括号。当我使用以下命令时,它给出了相同的空括号: for it

我的XML文件可用。虽然我可以从这个文件中获取根节点及其子节点。但是,我无法得到我需要的。我想获得
方法的内容
我尝试了xml和lxml包

当我使用以下命令时

 tree = lxml.etree.parse(fname) #fname is xml filename
 root= tree.getroot()

print(root[5].findall("ce:section-title",root.nsmap)
它只给了我空[]括号。当我使用以下命令时,它给出了相同的空括号:

for item in tree.iter('{http://www.elsevier.com/xml/ja/dtd}ce:section-title'):
    print(item)
我确实尝试使用提供的解决方案进行解决,但我在这段代码中遇到以下错误:

ns = {"ce":"http://www.elsevier.com/xml/common/dtd"}
print(root.findall("ce:title", ns).text)
AttributeError:“非类型”对象没有属性“文本”


任何方向都是有帮助的

它应该与
findall(.//ce:section title,root.nsmap)一起工作

在前面加上
/
后,您将在上下文节点下的所有级别上搜索
节标题
子体。使用
findall(ce:section title,root.nsmap)
,只能定位直接子元素

例如:

from lxml import etree

tree = etree.parse("data.xml")  # Your XML
root = tree.getroot()

for e in root.findall(".//ce:section-title", root.nsmap):
    print(e.text)
输出:

摘要
关键词
介绍
材料和方法
后果
按分类单元划分的出现种
区域出现物种清单
讨论
致谢
工具书类

您发布的代码正在使用变量(
),您尚未提供这些变量的定义。抱歉,谢谢,包括可能重复的