如何使用python解析具有xmlns属性的xml
我试着用不同的方法来访问它,但我不知道确切的问题。是记录文件类型问题吗?像这样遍历怎么样如何使用python解析具有xmlns属性的xml,python,xpath,elementtree,Python,Xpath,Elementtree,我试着用不同的方法来访问它,但我不知道确切的问题。是记录文件类型问题吗?像这样遍历怎么样 import xml.etree.ElementTree as ET tree = ET.parse('mca.xml') root = tree.getroot() def getElementsData(xpath): elements = list() if root.findall(xpath): for elem in root.findall(xpath):
import xml.etree.ElementTree as ET
tree = ET.parse('mca.xml')
root = tree.getroot()
def getElementsData(xpath):
elements = list()
if root.findall(xpath):
for elem in root.findall(xpath):
elements.append(elem.text)
return elements
else:
raise SystemExit("Invalid xpath provided")
t = getElementsData('.//ca1')
for i in t:
print(i)
尝试以下xpath
import xml.etree.ElementTree
e = xml.etree.ElementTree.parse('test.xml').getroot()
data = e.getchildren()[0].getchildren()[0].getchildren()[0].getchildren()[0].getchildren()[0].text
print(data)
您的文档在节点school和student上有名称空间,您需要将名称空间合并到搜索中。由于您正在查找ca1,它位于student下,因此需要指定student节点具有的名称空间:
tree.xpath('//ca1//text()')[0].strip()
注释
- 由于您的名称空间没有名称,我给它们起了ns\u school,ns\u student,但这些名称可以是任何名称(例如ns1,mystudent,…)
- 在更复杂的系统中,我建议引发一些其他类型的错误,并让调用方决定是否退出
tree.xpath('//ca1//text()')[0].strip()
import xml.etree.ElementTree as ET
tree = ET.parse('mca.xml')
root = tree.getroot()
def getElementsData(xpath, namespaces):
elements = root.findall(xpath, namespaces)
if elements == []:
raise SystemExit("Invalid xpath provided")
return elements
namespaces = {'ns_school': 'loyo:22:2.2', 'ns_student': 'loyo:5:542'}
elements = getElementsData('.//ns_student:ca1', namespaces)
for element in elements:
print(element)