Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python解析具有xmlns属性的xml_Python_Xpath_Elementtree - Fatal编程技术网

如何使用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)

您的文档在节点schoolstudent上有名称空间,您需要将名称空间合并到搜索中。由于您正在查找ca1,它位于student下,因此需要指定student节点具有的名称空间:

tree.xpath('//ca1//text()')[0].strip()
注释

  • 由于您的名称空间没有名称,我给它们起了ns\u schoolns\u student,但这些名称可以是任何名称(例如ns1mystudent,…)
  • 在更复杂的系统中,我建议引发一些其他类型的错误,并让调用方决定是否退出

我需要xpath来访问元素值@Apoorv Agarwal
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)