
ここから(ユーザー名)「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を例にすると、私はうまくいきます。