>백엔드 개발 >파이썬 튜토리얼 >Python xml 구문 분석 예제에 대한 자세한 설명

Python xml 구문 분석 예제에 대한 자세한 설명

黄舟
黄舟원래의
2016-12-14 18:00:331543검색

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 =&#39;1&#39;>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): 
&#39;&#39;&#39;&#39;&#39;打印结点基本信息&#39;&#39;&#39; 
print("node.tag:%s" % node.tag) 
print("node.attrib:%s"%node.attrib) 
print( "node.text:%s" % node.text)

검색:

find_all 
>>> root = read_xml (&#39;first.xml&#39;)   
>>> res = root.findall("person") 
[<Element &#39;person&#39; at 0x00000000033388B8>, <Element &#39;person&#39; at 0x0000000003413D68>] 
   
注意:findall只查询直接的子节点 
>>> r1 = root.findall("id") 
>>> r1 
[] 
>>> r =tree.findall(".//id") 
>>> for e in r: 
  print( e,e.text) 
      
<Element &#39;id&#39; at 0x00000000034279F8> 1 
<Element &#39;id&#39; at 0x0000000003427B38> 2

찾기:

#find()方法用来返回第一个匹配到的元素。当我们认为只会有一个匹配,或者有多个匹配但我们只关心第一个的时候,这个方法是很有用的。 
>>> res[0].find("id") 
<Element &#39;id&#39; 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 &#39;NoneType&#39;> 
>>> res[0].find("id") 
<Element &#39;id&#39; 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)!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.