ノート   前のページ
訪問者数 1988      最終更新 2010-05-09 (日) 15:56:54

2009/02/09  PythonとXML

参考資料

Expat (C言語用。copied from Using Expat by Clark Cooper September 01, 1999)

2009/02/09 Expat in Python (copied from 13.5.3 例) L [#b60f0b0d]

import xml.parsers.expat

# 3 handler functions
def start_element(name, attrs):
    print 'Start element:', name, attrs
def end_element(name):
    print 'End element:', name
def char_data(data):
    print 'Character data:', repr(data)

p = xml.parsers.expat.ParserCreate()

p.StartElementHandler = start_element
p.EndElementHandler = end_element
p.CharacterDataHandler = char_data

p.Parse("""<?xml version="1.0"?>
<parent id="top"><child1 name="paul">Text goes here</child1>
<child2 name="fred">More text</child2>
</parent>""")

2010/05/09 Expat in Pythonに追加。特にUTF-8漢字を含めて。 

http://d.hatena.ne.jp/kakurasan/20080603/p1 より

#! /usr/bin/python
# -*- encoding: utf-8 -*-

from xml.parsers.expat import ParserCreate
import sys

def start_element(name, attrs):
  print u"要素の開始: %s".encode("utf-8") % name.encode("utf-8")
  for (key, val) in attrs.iteritems():  # 辞書の各キーに対する処理を行う
    print u" 属性: %s = %s".encode("utf-8") % (key.encode("utf-8"), val.encode("utf-8"))
def end_element(name):
  print u"要素の終了: %s".encode("utf-8") % name.encode("utf-8")
def char_data(data):
  if data != "\n":
    print u" 文字データ: %s".encode("utf-8") % data.encode("utf-8")

p = ParserCreate()
p.buffer_text = True  # 文字データが細切れにならないように
# ハンドラ関数の関連付け
p.StartElementHandler = start_element  # 要素の開始
p.EndElementHandler = end_element      # 要素の終了
p.CharacterDataHandler = char_data     # 文字データ

if len(sys.argv) < 2:
  print >> sys.stderr, u"エラー: 入力ファイルが指定されていません".encode("utf-8")
  sys.exit(1)
infile = sys.argv[1]
try:
  f = open(infile)
except IOError:
  print >> sys.stderr,  u'エラー: ファイル "%s" が開けませんでした'.encode("utf-8") % infile
  sys.exit(1)
p.ParseFile(f)  # 処理を実行

2009/05/09 XMLにおける名前空間

bingアクセス時に出てきた。
知識として 

メモ Python+MySQLで漢字(utf-8)を格納したいとき

はじめに、Python+MySQLをFedoraで入れるには

yum install MySQL-python

が必要だった。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-05-09 (日) 15:56:54 (2604d)