解析命名空间XML时出现问题。显示空值。用Python
我的XML文件可用。虽然我可以从这个文件中获取根节点及其子节点。但是,我无法得到我需要的。我想获得解析命名空间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和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)
输出:
摘要
关键词
介绍
材料和方法
后果
按分类单元划分的出现种
区域出现物种清单
讨论
致谢
工具书类
您发布的代码正在使用变量(根
,树
),您尚未提供这些变量的定义。抱歉,谢谢,包括可能重复的