🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1162閲覧

xmlデータを読み取って欲しい情報を抜き取る

PINE1103

総合スコア20

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/10 07:35

xmlファイルに記載されている駅の名前を全て抜き取りたいのですが、できなくて困っています。
下記のxmlデータから駅の名前とidを抽出したく、コードを書き、コマンドプロンプトで実行したのですが、何も結果が返ってきませんでした。
原因と解決法を教えていただけたら幸いです。
よろしくお願いいたします。

python

1import xml.etree.ElementTree as ET 2 3tree=ET.parse('S12-18.xml') 4root=tree.getroot() 5for station_name in root.findall('ksj:TheNumberofTheStationPassengersGettingonandoff'): 6 id_number=station_name.get('gml:id') 7 station_name=station_name.find('ksj:stationName').text 8 print(id_number , station_name)

xml

1<?xml version="1.0" encoding="UTF-8" ?> 2<ksj:Dataset gml:id="S12Dataset" 3 xmlns:ksj="http://nlftp.mlit.go.jp/ksj/schemas/ksj-app" 4 xmlns:gml="http://www.opengis.net/gml/3.2" 5 xmlns:xlink="http://www.w3.org/1999/xlink" 6 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 7 xsi:schemaLocation="http://nlftp.mlit.go.jp/ksj/schemas/ksj-app KsjAppSchema-S12-v2_5.xsd"> 8<gml:description>国土数値情報(駅別乗降客数)データ S12-18.xml</gml:description> 9<gml:boundedBy> 10 <gml:EnvelopeWithTimePeriod srsName="JGD2011 / (B, L)" frame="GC / JST"> 11 <gml:lowerCorner>26.19319000 127.65228000</gml:lowerCorner> 12 <gml:upperCorner>45.41688000 145.59743000</gml:upperCorner> 13 <gml:beginPosition calendarEraName="西暦">1900</gml:beginPosition> 14 <gml:endPosition indeterminatePosition="unknown"/> 15 </gml:EnvelopeWithTimePeriod> 16</gml:boundedBy> 17<ksj:TheNumberofTheStationPassengersGettingonandoff gml:id="sp316"> 18 <ksj:station xlink:href="#cv316"/> 19 <ksj:stationName>松山市駅前</ksj:stationName> 20 <ksj:administrationCompany>伊予鉄道</ksj:administrationCompany> 21 <ksj:routeName>花園線</ksj:routeName> 22 <ksj:railroadDivision>21</ksj:railroadDivision> 23 <ksj:railroadCompanyClassification>4</ksj:railroadCompanyClassification> 24 <ksj:duplicate2011>1</ksj:duplicate2011> 25 <ksj:dataEorN2011>1</ksj:dataEorN2011> 26 <ksj:passengers2011>7596</ksj:passengers2011> 27 <ksj:duplicate2012>1</ksj:duplicate2012> 28 <ksj:dataEorN2012>1</ksj:dataEorN2012> 29 <ksj:passengers2012>7642</ksj:passengers2012> 30 <ksj:duplicate2013>1</ksj:duplicate2013> 31 <ksj:dataEorN2013>1</ksj:dataEorN2013> 32 <ksj:passengers2013>7928</ksj:passengers2013> 33 <ksj:duplicate2014>1</ksj:duplicate2014> 34 <ksj:dataEorN2014>1</ksj:dataEorN2014> 35 <ksj:passengers2014>7976</ksj:passengers2014> 36 <ksj:duplicate2015>1</ksj:duplicate2015> 37 <ksj:dataEorN2015>1</ksj:dataEorN2015> 38 <ksj:passengers2015>8113</ksj:passengers2015> 39 <ksj:duplicate2016>1</ksj:duplicate2016> 40 <ksj:dataEorN2016>1</ksj:dataEorN2016> 41 <ksj:passengers2016>8089</ksj:passengers2016> 42 <ksj:duplicate2017>1</ksj:duplicate2017> 43 <ksj:dataEorN2017>1</ksj:dataEorN2017> 44 <ksj:passengers2017>8309</ksj:passengers2017> 45</ksj:TheNumberofTheStationPassengersGettingonandoff> 46<ksj:TheNumberofTheStationPassengersGettingonandoff gml:id="sp317"> 47 <ksj:station xlink:href="#cv317"/> 48 <ksj:stationName>松山市</ksj:stationName> 49 <ksj:administrationCompany>伊予鉄道</ksj:administrationCompany> 50 <ksj:routeName>郡中線</ksj:routeName> 51 <ksj:railroadDivision>12</ksj:railroadDivision> 52 <ksj:railroadCompanyClassification>4</ksj:railroadCompanyClassification> 53 <ksj:duplicate2011>2</ksj:duplicate2011> 54 <ksj:dataEorN2011>1</ksj:dataEorN2011> 55 <ksj:passengers2011>0</ksj:passengers2011> 56 <ksj:duplicate2012>2</ksj:duplicate2012> 57 <ksj:dataEorN2012>1</ksj:dataEorN2012> 58 <ksj:passengers2012>0</ksj:passengers2012> 59 <ksj:duplicate2013>2</ksj:duplicate2013> 60 <ksj:dataEorN2013>1</ksj:dataEorN2013> 61 <ksj:passengers2013>0</ksj:passengers2013> 62 <ksj:duplicate2014>2</ksj:duplicate2014> 63 <ksj:dataEorN2014>1</ksj:dataEorN2014> 64 <ksj:passengers2014>0</ksj:passengers2014> 65 <ksj:duplicate2015>2</ksj:duplicate2015> 66 <ksj:dataEorN2015>1</ksj:dataEorN2015> 67 <ksj:passengers2015>0</ksj:passengers2015> 68 <ksj:duplicate2016>2</ksj:duplicate2016> 69 <ksj:dataEorN2016>1</ksj:dataEorN2016> 70 <ksj:passengers2016>0</ksj:passengers2016> 71 <ksj:duplicate2017>2</ksj:duplicate2017> 72 <ksj:dataEorN2017>1</ksj:dataEorN2017> 73 <ksj:passengers2017>0</ksj:passengers2017> 74</ksj:TheNumberofTheStationPassengersGettingonandoff>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

名前空間のある XML の解析を参照してください。

root.findall('ksj:TheNumberofTheStationPassengersGettingonandoff') と書くことはできません。root.findall('{http://nlftp.mlit.go.jp/ksj/schemas/ksj-app}TheNumberofTheStationPassengersGettingonandoff')と書いたり、名前空間の辞書を渡したりします。

投稿2021/02/10 07:42

int32_t

総合スコア21679

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

PINE1103

2021/02/10 08:17

ご返事ありがとうございます。 名前空間について調べ、理解しました。 ご指摘いただいたようにコードを修正することで、駅名を取得することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問