実現したいこと
Pythonの標準ライブラリElementTreeを使用して,名前空間付きのxmlから意図した要素を抽出しようとしています.
デフォルトの名前空間xmlnsに属する要素の抽出に成功しましたが,名前空間プリフェックス(接頭語)のある名前空間に属する要素の抽出がうまくいきません.
Python3を使用しています.
読み込むxml(demo.xml)
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<feed xmlns="http://www.w3.org/2000/Atom" xmlns:board="http://www.develop.com/board"> 3 <entry> 4 <id>12345</id> 5 <board:folder id="54321" /> 6 </entry> 7</feed>
###Pythonコード
python
1import xml.etree.ElementTree as ET 2 3tree = ET.parse('demo.xml') 4 5root = tree.getroot() 6 7id = root.find(".//{http://www.w3.org/2000/Atom}entry/{http://www.w3.org/2000/Atom}id") 8print("⬇️デフォルトの名前空間xmlnsに属するidを表示") 9print(id.text) 10 11id_board = root.find('.//board:folder', {'board': 'http://www.develop.com/board'}) 12print("⬇️xmlns:boardに属するidを表示") 13print(id_board.text) 14
実行結果
⬇️デフォルトの名前空間xmlnsに属するidを表示 12345 ⬇️xmlns:boardに属するidを表示 None
↑"None"と出てしまうところに,"54321"と出したいです(追記).
試したこと
xmlns:boardに属するidを示すXpathの部分を
.//{http://www.develop.com/board}board/{http://www.develop.com/board}folder
や
.//{http://www.w3.org/2000/Atom}board:{http://www.develop.com/board}folder
などと変えたりしてみましたが,成功しませんでした.ご教授のほどよろしくお願いいたします.

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/09 04:41
2019/01/09 07:19