여기에서 (사용자 이름) "pelech"를 개별적으로 가져와야 합니다. 이것은 내 XML 파일의 예일 뿐이며 사용자는 1000명입니다.
<user>
<login>pelech</login>
<password>passwords are saved outside</password>
</user>
다음 스크립트를 시도했지만 작동하지 않습니다.
import xml.etree.ElementTree as ET
tree = ET.parse("users.xml")
root = tree.getroot()
for app in root.findall('user'):
for l in zip(app.iter('login')):
print("%s" % (app.get('login')));
~
답변1
Linux 운영 체제를 사용하는 경우 - 쉬움xmlstarlet해결책:
xmlstarlet sel -t -v "//user/login" -n users.xml
답변2
나는 이것을 달성하기 위해 beautifulsoup를 사용합니다.
pip를 사용하여 설치하는 경우 아래 지침을 따르세요.
pip install bs4
Python 대화형 셸에서 테스트할 수 있습니다.
>>> from bs4 import BeautifulSoup as Soup
>>> content = """<user>
... <login>pelech</login>
... <password>passwords are saved outside</password>
... </user>"""
>>> soup = Soup(content, "html.parser")
>>> soup.find_all("login")
[<login>pelech</login>]
>>> soup.find("login").text
'pelech'
저는 기본 html.parser를 사용합니다. 올바르게 구문 분석하는 데 문제가 있으면 lxml 사용을 고려해 보세요.
완전성을 위해 다음에서 반환된 목록을 반복할 수 있습니다.soup.find_all("login")
>>> for login in soup.find_all("login"):
... print(login.text)
...
pelech
또는 Python 방식
>>> usernames = [login.text for login in soup.find_all("login")]
>>> usernames
['pelech']
자세한 내용은 다음을 참조하세요.https://www.crummy.com/software/BeautifulSoup/bs4/doc/
답변3
귀하의 XML 형식이 다음과 같다고 가정할 수 있습니다.
<users>
<user>
<login>pelech 1</login>
<password>passwords are saved outside</password>
</user>
<user>
<login>pelech 2</login>
<password>passwords are saved outside</password>
</user>
먼저 로그인 태그를 찾은 다음 루프 내에서 반복하면서 해당 태그의 텍스트를 가져와야 합니다.
import xml.etree.ElementTree as ET
tree = ET.parse("users.xml")
root = tree.getroot()
for app in root.findall('user'):
for l in app.findall('login'):
print("%s" % (l.text));
이 XML을 예로 들면 제게는 잘 작동합니다.