Python xml 구문 분석
first.xml
<info> <person > <id>1</id> <name>fsy</name> <age >24</age> </person> <person> <id>2</id> <name>jianjian</name> <age>24</age> </person> <count id ='1'>1000</count> </info>
from xml.etree import ElementTree를 etree로
읽기
def read_xml(file): # parse()函数会返回一个能代表整篇文档的对象。这不是根元素。要获得根元素的引用可以调用getroot()方法。 tree = etree.parse(file) root = tree.getroot() return root
정보 얻기
def print_node(node): '''''打印结点基本信息''' print("node.tag:%s" % node.tag) print("node.attrib:%s"%node.attrib) print( "node.text:%s" % node.text)
검색:
find_all >>> root = read_xml ('first.xml') >>> res = root.findall("person") [<Element 'person' at 0x00000000033388B8>, <Element 'person' at 0x0000000003413D68>] 注意:findall只查询直接的子节点 >>> r1 = root.findall("id") >>> r1 [] >>> r =tree.findall(".//id") >>> for e in r: print( e,e.text) <Element 'id' at 0x00000000034279F8> 1 <Element 'id' at 0x0000000003427B38> 2
찾기:
#find()方法用来返回第一个匹配到的元素。当我们认为只会有一个匹配,或者有多个匹配但我们只关心第一个的时候,这个方法是很有用的。 >>> res[0].find("id") <Element 'id' at 0x0000000003413CC8> >>> print_node(res[0].find("id")) node.tag:id node.attrib:{} node.text:1
find failed:
find를 사용할 때 부울 컨텍스트에서 ElementTree 요소 객체에 하위 요소가 포함되어 있지 않으면 해당 값은 False로 간주됩니다(즉, len(element) 0과 같습니다). 이는 다음과 같은 경우를 의미합니다.
element.find('...')는 find() 메서드가 일치하는 항목을 찾았는지 여부를 테스트하지 않습니다. 이 문은 일치하는 요소에 하위 요소가 포함되어 있는지 테스트합니다. find() 메소드가 요소를 반환하는지 테스트하려면 다음을 사용해야 합니다.
element.find('...')는 None이 아닙니다.
>>> bk = res[0].find("no") >>> bk >>> type(bk) <class 'NoneType'> >>> res[0].find("id") <Element 'id' at 0x0000000003413CC8> >>> if res[0].find("id"): print("find") else: print("not find") not find >>> if res[0].find("id") is not None: print("find") else: print("not find") find
위 내용은 Python xml 구문 분석 예제에 대한 자세한 설명입니다. 읽어주셔서 감사합니다. 더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 주목하시기 바랍니다. www.php.cn)!