programing

Python Element를 사용하여 xml 속성을 추출하는 방법나무

bestprogram 2023. 9. 24. 13:00

Python Element를 사용하여 xml 속성을 추출하는 방법나무

용도:

<foo>
 <bar key="value">text</bar>
</foo>

"가치"를 얻으려면 어떻게 해야 합니까?

xml.findtext("./bar[@key]")

오류를 던집니다.

이름이 지정된 요소의 첫 번째 인스턴스를 찾습니다.bar속성 값을 반환합니다.key.

In [52]: import xml.etree.ElementTree as ET

In [53]: xml=ET.fromstring(contents)

In [54]: xml.find('./bar').attrib['key']
Out[54]: 'value'

요소를 사용하여 XML에서 하위 태그 속성 값 가져오기나무

XML 파일을 파싱하고 다음을 가져옵니다.root태그를 지정한 다음 사용[0]우리에게 첫 아이 꼬리표를 줄 겁니다유사하게[1], [2]후속 자식 태그를 제공합니다.하위 태그 사용 후.attrib[attribute_name]그 속성의 가치를 얻기 위해서입니다.

>>> import xml.etree.ElementTree as ET
>>> xmlstr = '<foo><bar key="value">text</bar></foo>'
>>> root = ET.fromstring(xmlstr)
>>> root.tag
'foo'
>>> root[0].tag
'bar'
>>> root[0].attrib['key']
'value'

xml 콘텐츠가 파일에 있는 경우.아래 작업을 수행해야 다음을 얻을 수 있습니다.root.

>>> tree = ET.parse('file.xml')
>>> root = tree.getroot()

다음 방법으로 xml에서 모든 속성을 가져올 수 있습니다(사전에서).

import xml.etree.ElementTree as etree
xmlString= "<feed xml:lang='en'><title>World Wide Web</title><subtitle lang='en'>Programming challenges</subtitle><link rel='alternate' type='text/html' href='http://google.com/'/><updated>2019-12-25T12:00:00</updated></feed>"
xml= etree.fromstring(xmlString)  

def get_attr(xml):
    attributes = []
    for child in (xml):
        if len(child.attrib)!= 0:
            attributes.append(child.attrib)
        get_attr(child)
    return attributes
attributes = get_attr(xml)

print(attributes)

표정:

./bar[@key]

다음 뜻은 속성을 가진 아이들이란 뜻입니다.

속성을 선택하려면 다음과 같은 상대식을 사용합니다.

bar/@key

아이들의 특성이란 입니다.

물론 lxml과 같이 완벽하게 호환되는 XPath 엔진을 사용하는 것을 고려해야 합니다.

dipenparm12 함수는 자식 속성을 반환하지 않습니다.함수가 재귀적이기 때문에 속성 목록은 각 호출에 대해 빈 목록으로 설정됩니다.이 기능을 사용하면 자녀가 반환됩니다.

import xml.etree.ElementTree as etree
xml= etree.fromstring(xmlString) 


 def get_attr(xml, attributes):
     for child in (xml):
         if len(child.attrib)!= 0:
             attributes.append(child.attrib)
         get_attr(child,attributes)
     return attributes

  attributes = get_attr(xml,[])
  print(attributes)

나무 속으로 더 깊이 들어가기 위해 이런 종류의 함수를 사용할 수 있습니다.

root[1][2][0].tag  # For displaying the nodes
root[1][2][0].text # For showing what's inside the node

언급URL : https://stackoverflow.com/questions/4573237/how-to-extract-xml-attribute-using-python-elementtree