pythonでxmlを解析

横浜市の防災拠点

from bs4 import BeautifulSoup
import urllib.request as req
import os.path

url = "http://www.city.yokohama.lg.jp/somu/org/kikikanri/data/shelter.xml"
savename = "shelter.xml"
if not os.path.exists(savename):
	req.urlretrieve(url, savename)

xml = open(savename, "r", encoding="utf-8").read()
soup = BeautifulSoup(xml, 'html.parser')

info = {}
for i in soup.find_all("shelter"):
	name = i.find("name").string
	ward = i.find("ward").string
	addr = i.find("address").string
	note = i.find("notes").string
	if not (ward in info):
		info[ward] = []
	info[ward].append(name)

for ward in info.keys():
	print("+", ward)
	for name in info[ward]:
		print("| - ", name)

[vagrant@localhost python]$ python3 app.py
+ 磯子区
| – 滝頭小学校
| – 岡村小学校
| – 磯子小学校
| – 浜小学校
| – 杉田小学校
| – 根岸小学校
| – 屏風浦小学校
| – 梅林小学校
| – 汐見台小学校
| – 洋光台第一小学校
| – 洋光台第二小学校
| – さわの里小学校
| – 洋光台第三小学校
| – 洋光台第四小学校
| – 森東小学校
| – 山王台小学校

なるほど。xmlを作って公開したいですな。

<?php

$rootNode = new SimpleXMLElement("<rss xmlns:a10='http://www.w3.org/2005/Atom' version='2.0'><items></items>");

$itemNode = $rootNode->addChild('item');
$itemNode->addChild('title', '剰余金の配当に関するお知らせ');
$itemNode->addChild('description', '剰余金の配当を行うことを決議いたしました。');

$itemNode = $rootNode->addChild('item');
$itemNode->addChild('title', '監査役の異動に関するお知らせ');
$itemNode->addChild('description', '定時株主総会に付議する監査役の候補者につきまして、下記の通り内定いたしました。');

$itemNode = $rootNode->addChild('item');
$itemNode->addChild('title', '自己株式の取得状況に関するお知らせ');
$itemNode->addChild('description', '自己株式取得状況について、下記のとおりお知らせいたします。');

// $itemNode->addAttribute('stock', 'none');
$dom = new DOMDocument('1.0');
$dom->loadXML($rootNode->asXML());
$dom->formatOutput = true;
echo $dom->saveXML();

[Sat Aug 11 20:12:20 2018] 192.168.35.1:53532 [500]: /app.php – Uncaught exception ‘Exception’ with message ‘String could not be parsed as XML’ in /home/vagrant/python/app.php:3
Stack trace:
#0 /home/vagrant/python/app.php(3): SimpleXMLElement->__construct(‘


剰余金の配当に関するお知らせ
剰余金の配当を行うことを決議いたしました。


監査役の異動に関するお知らせ
定時株主総会に付議する監査役の候補者につきまして、下記の通り内定いたしました。


自己株式の取得状況に関するお知らせ
自己株式取得状況について、下記のとおりお知らせいたします。


[/php]