
| ■ | PyXMLのDOMモジュール |
PyXMLにはいくつかのXMLパーサが用意されているので、 それらのうちの2つを使って、XML文書からDOMツリーを構築し、 単にそれを標準出力に書き出すだけの処理をしてみます。 まずSaxです。
from xml.dom.ext import Print
from xml.dom.ext.reader.Sax import FromXmlFile
doc = FromXmlFile("orders2.xml")
Print(doc)
|
おおっと、Python処理系のデフォルト設定ではこのPrintが文字化けしてしまうので、 $PYTHON_HOME/lib/site.py というファイルをテキストエディタで編集して、 デフォルトのエンコーディングを日本語の文字コードにしておきます。
#encoding = "ascii" # Default value set by _PyUnicode_Init() encoding = "japanese.shift_jis" |
今度はPyExpat(Expat)を使ってみます。
from xml.dom.ext import Print
from xml.dom.ext.reader import PyExpat
reader = PyExpat.Reader()
doc = reader.fromUri("orders2.xml")
Print(doc)
reader.releaseNode(doc)
# end.
|
次に、実際にルートノードから順番にDOMツリーを探検していく処理を書いてみます。
from xml.dom.ext import Print
from xml.dom.ext.reader.Sax import FromXmlFile
def checkNode(node):
type = str(node.nodeType)
name = node.nodeName
if name == None: name = ""
value = node.nodeValue
if value == None: value = ""
children = node.childNodes
attrs = node.attributes
print "[" + name + "(" + type + ")] = [" + value + "]"
if attrs != None and len(attrs) > 0:
print "(ATTRS)"
for a in attrs: print "ATTR[" + a.name + "] = [" + a.value + "]"
for c in children:
checkNode(c)
doc = FromXmlFile("orders2.xml")
checkNode(doc)
|
セクションのサブメニューに戻る
(first uploaded 2003/02/01 last updated 2003/02/01)